home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / fg / fgdraw.frm < prev    next >
Text File  |  1994-11-03  |  90KB  |  2,799 lines

  1. VERSION 2.00
  2. Begin Form frmFGDrawDemo 
  3.    BackColor       =   &H00C0C0C0&
  4.    Caption         =   "FG Draw Demo"
  5.    ClientHeight    =   6000
  6.    ClientLeft      =   630
  7.    ClientTop       =   1425
  8.    ClientWidth     =   8445
  9.    Height          =   6690
  10.    HelpContextID   =   1
  11.    Icon            =   FGDRAW.FRX:0000
  12.    Left            =   570
  13.    LinkTopic       =   "Form1"
  14.    ScaleHeight     =   400
  15.    ScaleMode       =   3  'Pixel
  16.    ScaleWidth      =   563
  17.    Top             =   795
  18.    Width           =   8565
  19.    Begin SSPanel pnlAttribBar 
  20.       BackColor       =   &H00C0C0C0&
  21.       BevelInner      =   1  'Inset
  22.       BorderWidth     =   2
  23.       Font3D          =   0  'None
  24.       Height          =   1050
  25.       HelpContextID   =   14
  26.       Left            =   -15
  27.       TabIndex        =   8
  28.       Top             =   4830
  29.       Width           =   8415
  30.       Begin CommonDialog CMDialog1 
  31.          Prop12          =   ""
  32.          Prop27          =   ""
  33.          Prop28          =   FGDRAW.FRX:0302
  34.          Action          =   0  'Nothing
  35.          CancelError     =   0   'False
  36.          Color           =   &H00000000&
  37.          Copies          =   0
  38.          DefaultExt      =   ""
  39.          DialogTitle     =   ""
  40.          Filename        =   ""
  41.          Filetitle       =   ""
  42.          Filter          =   ""
  43.          FilterIndex     =   0
  44.          Flags           =   0
  45.          FontBold        =   0   'False
  46.          FontItalic      =   0   'False
  47.          FontName        =   ""
  48.          FontSize        =   8
  49.          FontStrikeThru  =   0   'False
  50.          FontUnderLine   =   0   'False
  51.          FromPage        =   0
  52.          HelpCommand     =   0
  53.          HelpContext     =   0
  54.          HelpFile        =   ""
  55.          HelpKey         =   ""
  56.          InitDir         =   ""
  57.          Max             =   0
  58.          MaxFileSize     =   256
  59.          Min             =   0
  60.          PrinterDefault  =   -1  'True
  61.          ToPage          =   0
  62.       End
  63.       Begin PictureBox picColorBtns 
  64.          BackColor       =   &H00C0C0C0&
  65.          BorderStyle     =   0  'None
  66.          ClipControls    =   0   'False
  67.          Height          =   930
  68.          HelpContextID   =   15
  69.          Left            =   4290
  70.          ScaleHeight     =   62
  71.          ScaleMode       =   3  'Pixel
  72.          ScaleWidth      =   186
  73.          TabIndex        =   18
  74.          Tag             =   "TT:[Select a Color (DblClick to Edit)]"
  75.          Top             =   60
  76.          Width           =   2790
  77.          Begin FG FG2 
  78.             Height          =   420
  79.             Left            =   30
  80.             Top             =   315
  81.             Width           =   420
  82.          End
  83.       End
  84.       Begin CommandButton cmdSelectFont 
  85.          BackColor       =   &H00C0C0C0&
  86.          Caption         =   "Font"
  87.          FontBold        =   -1  'True
  88.          FontItalic      =   0   'False
  89.          FontName        =   "System"
  90.          FontSize        =   9.75
  91.          FontStrikethru  =   0   'False
  92.          FontUnderline   =   0   'False
  93.          Height          =   315
  94.          HelpContextID   =   17
  95.          Left            =   2655
  96.          TabIndex        =   17
  97.          Tag             =   "TT:[Set Font Attributes]"
  98.          Top             =   600
  99.          Width           =   975
  100.       End
  101.       Begin SSPanel Panel3D4 
  102.          BackColor       =   &H00C0C0C0&
  103.          BevelInner      =   1  'Inset
  104.          BorderWidth     =   1
  105.          Font3D          =   0  'None
  106.          Height          =   480
  107.          HelpContextID   =   18
  108.          Left            =   2655
  109.          TabIndex        =   16
  110.          Top             =   75
  111.          Width           =   1005
  112.          Begin SSRibbon grbTransparent 
  113.             BackColor       =   &H00C0C0C0&
  114.             GroupAllowAllUp =   0   'False
  115.             GroupNumber     =   7
  116.             Height          =   390
  117.             HelpContextID   =   19
  118.             Left            =   495
  119.             PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  120.             PictureUp       =   FGDRAW.FRX:030A
  121.             RoundedCorners  =   0   'False
  122.             Tag             =   "TT:[Transparent]"
  123.             Top             =   45
  124.             Value           =   -1  'True
  125.             Width           =   465
  126.          End
  127.          Begin SSRibbon grbOpaque 
  128.             BackColor       =   &H00C0C0C0&
  129.             GroupAllowAllUp =   0   'False
  130.             GroupNumber     =   7
  131.             Height          =   390
  132.             HelpContextID   =   20
  133.             Left            =   45
  134.             PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  135.             PictureUp       =   FGDRAW.FRX:04C4
  136.             RoundedCorners  =   0   'False
  137.             Tag             =   "TT:[Opaque]"
  138.             Top             =   45
  139.             Width           =   465
  140.          End
  141.       End
  142.       Begin SSPanel Panel3D3 
  143.          BackColor       =   &H00C0C0C0&
  144.          BevelInner      =   1  'Inset
  145.          BorderWidth     =   1
  146.          Font3D          =   0  'None
  147.          Height          =   900
  148.          HelpContextID   =   21
  149.          Left            =   1755
  150.          MousePointer    =   10  'Up Arrow
  151.          TabIndex        =   15
  152.          Tag             =   "TT:[Select a Fill Style]"
  153.          Top             =   75
  154.          Width           =   885
  155.          Begin Shape Shape4 
  156.             BorderColor     =   &H00000000&
  157.             BorderStyle     =   0  'Transparent
  158.             DrawMode        =   10  'Not Xor Pen
  159.             FillStyle       =   0  'Solid
  160.             Height          =   255
  161.             Left            =   60
  162.             Top             =   315
  163.             Width           =   255
  164.          End
  165.          Begin Shape Shape3 
  166.             FillStyle       =   7  'Diagonal Cross
  167.             Height          =   225
  168.             Index           =   7
  169.             Left            =   585
  170.             Top             =   330
  171.             Width           =   225
  172.          End
  173.          Begin Shape Shape3 
  174.             FillStyle       =   6  'Cross
  175.             Height          =   225
  176.             Index           =   6
  177.             Left            =   585
  178.             Top             =   75
  179.             Width           =   225
  180.          End
  181.          Begin Shape Shape3 
  182.             FillStyle       =   5  'Downward Diagonal
  183.             Height          =   225
  184.             Index           =   5
  185.             Left            =   330
  186.             Top             =   585
  187.             Width           =   225
  188.          End
  189.          Begin Shape Shape3 
  190.             FillStyle       =   4  'Upward Diagonal
  191.             Height          =   225
  192.             Index           =   4
  193.             Left            =   330
  194.             Top             =   330
  195.             Width           =   225
  196.          End
  197.          Begin Shape Shape3 
  198.             FillStyle       =   3  'Vertical Line
  199.             Height          =   225
  200.             Index           =   3
  201.             Left            =   330
  202.             Top             =   75
  203.             Width           =   225
  204.          End
  205.          Begin Shape Shape3 
  206.             FillStyle       =   2  'Horizontal Line
  207.             Height          =   225
  208.             Index           =   2
  209.             Left            =   75
  210.             Top             =   585
  211.             Width           =   225
  212.          End
  213.          Begin Shape Shape3 
  214.             Height          =   225
  215.             Index           =   1
  216.             Left            =   75
  217.             Top             =   330
  218.             Width           =   225
  219.          End
  220.          Begin Shape Shape3 
  221.             FillStyle       =   0  'Solid
  222.             Height          =   225
  223.             Index           =   0
  224.             Left            =   75
  225.             Top             =   75
  226.             Width           =   225
  227.          End
  228.       End
  229.       Begin SSPanel Panel3D2 
  230.          BackColor       =   &H00C0C0C0&
  231.          BevelInner      =   1  'Inset
  232.          BorderWidth     =   1
  233.          Font3D          =   0  'None
  234.          Height          =   900
  235.          HelpContextID   =   22
  236.          Left            =   1005
  237.          MousePointer    =   10  'Up Arrow
  238.          TabIndex        =   14
  239.          Tag             =   "TT:[Select a Border Width]"
  240.          Top             =   75
  241.          Width           =   735
  242.          Begin TextBox txtBorderWidth 
  243.             Height          =   285
  244.             HelpContextID   =   23
  245.             Left            =   195
  246.             MousePointer    =   3  'I-Beam
  247.             TabIndex        =   19
  248.             Text            =   "32"
  249.             Top             =   555
  250.             Width           =   465
  251.          End
  252.          Begin Line Line2 
  253.             BorderWidth     =   8
  254.             Index           =   5
  255.             X1              =   270
  256.             X2              =   600
  257.             Y1              =   660
  258.             Y2              =   660
  259.          End
  260.          Begin Shape Shape2 
  261.             FillStyle       =   0  'Solid
  262.             Height          =   60
  263.             Left            =   60
  264.             Shape           =   3  'Circle
  265.             Top             =   90
  266.             Width           =   60
  267.          End
  268.          Begin Line Line2 
  269.             Index           =   1
  270.             X1              =   270
  271.             X2              =   600
  272.             Y1              =   165
  273.             Y2              =   165
  274.          End
  275.          Begin Line Line2 
  276.             BorderWidth     =   2
  277.             Index           =   2
  278.             X1              =   270
  279.             X2              =   600
  280.             Y1              =   240
  281.             Y2              =   240
  282.          End
  283.          Begin Line Line2 
  284.             BorderWidth     =   4
  285.             Index           =   3
  286.             X1              =   270
  287.             X2              =   600
  288.             Y1              =   330
  289.             Y2              =   330
  290.          End
  291.          Begin Line Line2 
  292.             BorderWidth     =   8
  293.             Index           =   4
  294.             X1              =   270
  295.             X2              =   600
  296.             Y1              =   450
  297.             Y2              =   450
  298.          End
  299.          Begin Line Line2 
  300.             BorderColor     =   &H00000000&
  301.             Index           =   0
  302.             X1              =   270
  303.             X2              =   600
  304.             Y1              =   90
  305.             Y2              =   90
  306.          End
  307.       End
  308.       Begin SSPanel Panel3D1 
  309.          BackColor       =   &H00C0C0C0&
  310.          BevelInner      =   1  'Inset
  311.          BorderWidth     =   1
  312.          Font3D          =   0  'None
  313.          Height          =   900
  314.          HelpContextID   =   24
  315.          Left            =   75
  316.          MousePointer    =   10  'Up Arrow
  317.          TabIndex        =   13
  318.          Tag             =   "TT:[Select Bordere Style]"
  319.          Top             =   75
  320.          Width           =   915
  321.          Begin Line Line1 
  322.             BorderColor     =   &H00000000&
  323.             Index           =   0
  324.             Tag             =   "TT:[Solid Line]"
  325.             X1              =   240
  326.             X2              =   840
  327.             Y1              =   120
  328.             Y2              =   120
  329.          End
  330.          Begin Line Line1 
  331.             BorderStyle     =   6  'Inside Solid
  332.             Index           =   6
  333.             X1              =   240
  334.             X2              =   840
  335.             Y1              =   750
  336.             Y2              =   750
  337.          End
  338.          Begin Line Line1 
  339.             BorderColor     =   &H00808080&
  340.             Index           =   5
  341.             X1              =   240
  342.             X2              =   840
  343.             Y1              =   645
  344.             Y2              =   645
  345.          End
  346.          Begin Line Line1 
  347.             BorderStyle     =   5  'Dash-Dot-Dot
  348.             Index           =   4
  349.             X1              =   240
  350.             X2              =   840
  351.             Y1              =   540
  352.             Y2              =   540
  353.          End
  354.          Begin Line Line1 
  355.             BorderStyle     =   4  'Dash-Dot
  356.             Index           =   3
  357.             X1              =   240
  358.             X2              =   840
  359.             Y1              =   435
  360.             Y2              =   435
  361.          End
  362.          Begin Line Line1 
  363.             BorderStyle     =   3  'Dot
  364.             Index           =   2
  365.             X1              =   240
  366.             X2              =   840
  367.             Y1              =   330
  368.             Y2              =   330
  369.          End
  370.          Begin Line Line1 
  371.             BorderStyle     =   2  'Dash
  372.             Index           =   1
  373.             X1              =   240
  374.             X2              =   840
  375.             Y1              =   225
  376.             Y2              =   225
  377.          End
  378.          Begin Shape Shape1 
  379.             FillStyle       =   0  'Solid
  380.             Height          =   60
  381.             Left            =   105
  382.             Shape           =   3  'Circle
  383.             Top             =   105
  384.             Width           =   60
  385.          End
  386.       End
  387.       Begin Label Label2 
  388.          Alignment       =   1  'Right Justify
  389.          BackStyle       =   0  'Transparent
  390.          Caption         =   "Back"
  391.          Height          =   180
  392.          Index           =   3
  393.          Left            =   3630
  394.          TabIndex        =   12
  395.          Top             =   765
  396.          Width           =   660
  397.       End
  398.       Begin Label Label2 
  399.          Alignment       =   1  'Right Justify
  400.          BackStyle       =   0  'Transparent
  401.          Caption         =   "Font"
  402.          Height          =   180
  403.          Index           =   2
  404.          Left            =   3630
  405.          TabIndex        =   11
  406.          Top             =   555
  407.          Width           =   660
  408.       End
  409.       Begin Label Label2 
  410.          Alignment       =   1  'Right Justify
  411.          BackStyle       =   0  'Transparent
  412.          Caption         =   "Fill"
  413.          Height          =   180
  414.          Index           =   1
  415.          Left            =   3645
  416.          TabIndex        =   10
  417.          Top             =   300
  418.          Width           =   630
  419.       End
  420.       Begin Label Label2 
  421.          Alignment       =   1  'Right Justify
  422.          BackStyle       =   0  'Transparent
  423.          Caption         =   "Border"
  424.          Height          =   180
  425.          Index           =   0
  426.          Left            =   3645
  427.          TabIndex        =   9
  428.          Top             =   75
  429.          Width           =   645
  430.       End
  431.    End
  432.    Begin PictureBox picDrawSpace 
  433.       BackColor       =   &H00FFFFFF&
  434.       ClipControls    =   0   'False
  435.       FillColor       =   &H000000FF&
  436.       FillStyle       =   0  'Solid
  437.       FontBold        =   -1  'True
  438.       FontItalic      =   0   'False
  439.       FontName        =   "System"
  440.       FontSize        =   78
  441.       FontStrikethru  =   -1  'True
  442.       FontUnderline   =   0   'False
  443.       ForeColor       =   &H00FF0000&
  444.       Height          =   4665
  445.       HelpContextID   =   25
  446.       Left            =   1605
  447.       ScaleHeight     =   309
  448.       ScaleMode       =   3  'Pixel
  449.       ScaleWidth      =   439
  450.       TabIndex        =   2
  451.       Top             =   60
  452.       Width           =   6615
  453.       Begin FG FG1 
  454.          Height          =   420
  455.          Left            =   120
  456.          Top             =   120
  457.          Width           =   420
  458.       End
  459.    End
  460.    Begin PictureBox picButtonBarBorder 
  461.       Align           =   2  'Align Bottom
  462.       Height          =   15
  463.       HelpContextID   =   27
  464.       Left            =   0
  465.       ScaleHeight     =   0
  466.       ScaleWidth      =   8415
  467.       TabIndex        =   1
  468.       Top             =   5985
  469.       Width           =   8445
  470.    End
  471.    Begin SSPanel pnlButtonBar 
  472.       BackColor       =   &H00C0C0C0&
  473.       BevelInner      =   1  'Inset
  474.       BorderWidth     =   2
  475.       Font3D          =   0  'None
  476.       Height          =   4770
  477.       HelpContextID   =   28
  478.       Left            =   0
  479.       TabIndex        =   0
  480.       Top             =   15
  481.       Width           =   1395
  482.       Begin SSCommand cmdDeleteGraphic 
  483.          Caption         =   "-"
  484.          Font3D          =   0  'None
  485.          FontBold        =   -1  'True
  486.          FontItalic      =   0   'False
  487.          FontName        =   "System"
  488.          FontSize        =   19.5
  489.          FontStrikethru  =   0   'False
  490.          FontUnderline   =   0   'False
  491.          Height          =   330
  492.          HelpContextID   =   29
  493.          Left            =   1005
  494.          Picture         =   FGDRAW.FRX:067E
  495.          RoundedCorners  =   0   'False
  496.          TabIndex        =   28
  497.          Tag             =   "TT:[Zoom OUt]"
  498.          Top             =   60
  499.          Width           =   330
  500.       End
  501.       Begin SSCommand cmdPageDown 
  502.          Font3D          =   0  'None
  503.          Height          =   330
  504.          HelpContextID   =   30
  505.          Left            =   540
  506.          Picture         =   FGDRAW.FRX:0778
  507.          RoundedCorners  =   0   'False
  508.          TabIndex        =   27
  509.          Top             =   4110
  510.          Width           =   330
  511.       End
  512.       Begin SSCommand cmdStepDown 
  513.          Font3D          =   0  'None
  514.          Height          =   330
  515.          HelpContextID   =   31
  516.          Left            =   540
  517.          Picture         =   FGDRAW.FRX:0872
  518.          RoundedCorners  =   0   'False
  519.          TabIndex        =   26
  520.          Top             =   3795
  521.          Width           =   330
  522.       End
  523.       Begin SSCommand cmdPageRight 
  524.          Font3D          =   0  'None
  525.          Height          =   330
  526.          HelpContextID   =   32
  527.          Left            =   1005
  528.          Picture         =   FGDRAW.FRX:096C
  529.          RoundedCorners  =   0   'False
  530.          TabIndex        =   25
  531.          Top             =   3480
  532.          Width           =   330
  533.       End
  534.       Begin SSCommand cmdStepRight 
  535.          Font3D          =   0  'None
  536.          Height          =   330
  537.          HelpContextID   =   33
  538.          Left            =   690
  539.          Picture         =   FGDRAW.FRX:0A66
  540.          RoundedCorners  =   0   'False
  541.          TabIndex        =   24
  542.          Top             =   3480
  543.          Width           =   330
  544.       End
  545.       Begin SSCommand cmdStepLeft 
  546.          Font3D          =   0  'None
  547.          Height          =   330
  548.          HelpContextID   =   34
  549.          Left            =   375
  550.          Picture         =   FGDRAW.FRX:0B60
  551.          RoundedCorners  =   0   'False
  552.          TabIndex        =   23
  553.          Top             =   3480
  554.          Width           =   330
  555.       End
  556.       Begin SSCommand cmdStepUp 
  557.          Font3D          =   0  'None
  558.          Height          =   330
  559.          HelpContextID   =   35
  560.          Left            =   540
  561.          Picture         =   FGDRAW.FRX:0C5A
  562.          RoundedCorners  =   0   'False
  563.          TabIndex        =   22
  564.          Top             =   3165
  565.          Width           =   330
  566.       End
  567.       Begin SSCommand cmdPageUp 
  568.          Font3D          =   0  'None
  569.          Height          =   330
  570.          HelpContextID   =   36
  571.          Left            =   540
  572.          Picture         =   FGDRAW.FRX:0D54
  573.          RoundedCorners  =   0   'False
  574.          TabIndex        =   21
  575.          Top             =   2850
  576.          Width           =   330
  577.       End
  578.       Begin SSCommand cmdPageLeft 
  579.          Font3D          =   0  'None
  580.          Height          =   330
  581.          HelpContextID   =   37
  582.          Left            =   60
  583.          Picture         =   FGDRAW.FRX:0E4E
  584.          RoundedCorners  =   0   'False
  585.          TabIndex        =   20
  586.          Top             =   3480
  587.          Width           =   330
  588.       End
  589.       Begin SSRibbon grbDrawTool 
  590.          BackColor       =   &H00C0C0C0&
  591.          GroupAllowAllUp =   0   'False
  592.          Height          =   330
  593.          HelpContextID   =   38
  594.          Index           =   8
  595.          Left            =   1005
  596.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  597.          PictureUp       =   FGDRAW.FRX:0F48
  598.          RoundedCorners  =   0   'False
  599.          Tag             =   "TT:[Polyline]"
  600.          Top             =   795
  601.          Width           =   330
  602.       End
  603.       Begin SSCheck chkKeepAspectRatio 
  604.          Font3D          =   0  'None
  605.          Height          =   255
  606.          HelpContextID   =   39
  607.          Left            =   105
  608.          TabIndex        =   7
  609.          Top             =   1935
  610.          Value           =   -1  'True
  611.          Width           =   240
  612.       End
  613.       Begin SSRibbon grbDrawTool 
  614.          BackColor       =   &H00C0C0C0&
  615.          GroupAllowAllUp =   0   'False
  616.          Height          =   330
  617.          HelpContextID   =   38
  618.          Index           =   15
  619.          Left            =   690
  620.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  621.          PictureUp       =   FGDRAW.FRX:1042
  622.          RoundedCorners  =   0   'False
  623.          Tag             =   "TT:[Zoom In]"
  624.          Top             =   1425
  625.          Width           =   330
  626.       End
  627.       Begin SSCommand cdmZoomOut 
  628.          Caption         =   "-"
  629.          Font3D          =   0  'None
  630.          FontBold        =   -1  'True
  631.          FontItalic      =   0   'False
  632.          FontName        =   "System"
  633.          FontSize        =   19.5
  634.          FontStrikethru  =   0   'False
  635.          FontUnderline   =   0   'False
  636.          Height          =   330
  637.          HelpContextID   =   40
  638.          Left            =   1005
  639.          RoundedCorners  =   0   'False
  640.          TabIndex        =   5
  641.          Tag             =   "TT:[Zoom OUt]"
  642.          Top             =   1425
  643.          Width           =   330
  644.       End
  645.       Begin SSRibbon grbDrawTool 
  646.          BackColor       =   &H00C0C0C0&
  647.          GroupAllowAllUp =   0   'False
  648.          Height          =   330
  649.          HelpContextID   =   38
  650.          Index           =   14
  651.          Left            =   375
  652.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  653.          PictureUp       =   FGDRAW.FRX:113C
  654.          RoundedCorners  =   0   'False
  655.          Tag             =   "TT:[Free Hand Draw]"
  656.          Top             =   1425
  657.          Width           =   330
  658.       End
  659.       Begin SSRibbon grbDrawTool 
  660.          BackColor       =   &H00C0C0C0&
  661.          GroupAllowAllUp =   0   'False
  662.          Height          =   330
  663.          HelpContextID   =   38
  664.          Index           =   13
  665.          Left            =   60
  666.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  667.          PictureUp       =   FGDRAW.FRX:1236
  668.          RoundedCorners  =   0   'False
  669.          Tag             =   "TT:[TextOut"
  670.          Top             =   1425
  671.          Width           =   330
  672.       End
  673.       Begin SSRibbon grbDrawTool 
  674.          BackColor       =   &H00C0C0C0&
  675.          GroupAllowAllUp =   0   'False
  676.          Height          =   330
  677.          HelpContextID   =   38
  678.          Index           =   12
  679.          Left            =   1005
  680.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  681.          PictureUp       =   FGDRAW.FRX:1330
  682.          RoundedCorners  =   0   'False
  683.          Tag             =   "TT:[RoundRect]"
  684.          Top             =   1110
  685.          Width           =   330
  686.       End
  687.       Begin SSRibbon grbDrawTool 
  688.          BackColor       =   &H00C0C0C0&
  689.          GroupAllowAllUp =   0   'False
  690.          Height          =   330
  691.          HelpContextID   =   38
  692.          Index           =   11
  693.          Left            =   690
  694.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  695.          PictureUp       =   FGDRAW.FRX:142A
  696.          RoundedCorners  =   0   'False
  697.          Tag             =   "TT:[Rectangle]"
  698.          Top             =   1110
  699.          Width           =   330
  700.       End
  701.       Begin SSRibbon grbDrawTool 
  702.          BackColor       =   &H00C0C0C0&
  703.          GroupAllowAllUp =   0   'False
  704.          Height          =   330
  705.          HelpContextID   =   38
  706.          Index           =   10
  707.          Left            =   375
  708.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  709.          PictureUp       =   FGDRAW.FRX:1524
  710.          RoundedCorners  =   0   'False
  711.          Tag             =   "TT:[PolyTextOut]"
  712.          Top             =   1110
  713.          Width           =   330
  714.       End
  715.       Begin SSRibbon grbDrawTool 
  716.          BackColor       =   &H00C0C0C0&
  717.          GroupAllowAllUp =   0   'False
  718.          Height          =   330
  719.          HelpContextID   =   38
  720.          Index           =   9
  721.          Left            =   60
  722.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  723.          PictureUp       =   FGDRAW.FRX:161E
  724.          RoundedCorners  =   0   'False
  725.          Tag             =   "TT:[PolyPolygon]"
  726.          Top             =   1110
  727.          Width           =   330
  728.       End
  729.       Begin SSRibbon grbDrawTool 
  730.          BackColor       =   &H00C0C0C0&
  731.          GroupAllowAllUp =   0   'False
  732.          Height          =   330
  733.          HelpContextID   =   38
  734.          Index           =   7
  735.          Left            =   690
  736.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  737.          PictureUp       =   FGDRAW.FRX:1718
  738.          RoundedCorners  =   0   'False
  739.          Tag             =   "TT:[Pie]"
  740.          Top             =   795
  741.          Width           =   330
  742.       End
  743.       Begin SSRibbon grbDrawTool 
  744.          BackColor       =   &H00C0C0C0&
  745.          GroupAllowAllUp =   0   'False
  746.          Height          =   330
  747.          HelpContextID   =   38
  748.          Index           =   6
  749.          Left            =   375
  750.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  751.          PictureUp       =   FGDRAW.FRX:1812
  752.          RoundedCorners  =   0   'False
  753.          Tag             =   "TT:[Polygon]"
  754.          Top             =   795
  755.          Width           =   330
  756.       End
  757.       Begin SSRibbon grbDrawTool 
  758.          BackColor       =   &H00C0C0C0&
  759.          GroupAllowAllUp =   0   'False
  760.          Height          =   330
  761.          HelpContextID   =   38
  762.          Index           =   5
  763.          Left            =   60
  764.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  765.          PictureUp       =   FGDRAW.FRX:190C
  766.          RoundedCorners  =   0   'False
  767.          Tag             =   "TT:[Line]"
  768.          Top             =   795
  769.          Width           =   330
  770.       End
  771.       Begin SSRibbon grbDrawTool 
  772.          BackColor       =   &H00C0C0C0&
  773.          GroupAllowAllUp =   0   'False
  774.          Height          =   330
  775.          HelpContextID   =   38
  776.          Index           =   4
  777.          Left            =   1005
  778.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  779.          PictureUp       =   FGDRAW.FRX:1A06
  780.          RoundedCorners  =   0   'False
  781.          Tag             =   "TT:[Ellipse]"
  782.          Top             =   480
  783.          Width           =   330
  784.       End
  785.       Begin SSRibbon grbDrawTool 
  786.          BackColor       =   &H00C0C0C0&
  787.          GroupAllowAllUp =   0   'False
  788.          Height          =   330
  789.          HelpContextID   =   38
  790.          Index           =   3
  791.          Left            =   690
  792.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  793.          PictureUp       =   FGDRAW.FRX:1B00
  794.          RoundedCorners  =   0   'False
  795.          Tag             =   "TT:[Draw Text]"
  796.          Top             =   480
  797.          Width           =   330
  798.       End
  799.       Begin SSRibbon grbDrawTool 
  800.          BackColor       =   &H00C0C0C0&
  801.          GroupAllowAllUp =   0   'False
  802.          Height          =   330
  803.          HelpContextID   =   38
  804.          Index           =   0
  805.          Left            =   60
  806.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  807.          PictureUp       =   FGDRAW.FRX:1BFA
  808.          RoundedCorners  =   0   'False
  809.          Tag             =   "TT:[Selection]"
  810.          Top             =   60
  811.          Value           =   -1  'True
  812.          Width           =   330
  813.       End
  814.       Begin SSRibbon grbDrawTool 
  815.          BackColor       =   &H00C0C0C0&
  816.          GroupAllowAllUp =   0   'False
  817.          Height          =   330
  818.          HelpContextID   =   38
  819.          Index           =   2
  820.          Left            =   375
  821.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  822.          PictureUp       =   FGDRAW.FRX:1CF4
  823.          RoundedCorners  =   0   'False
  824.          Tag             =   "TT:[Chord]"
  825.          Top             =   480
  826.          Width           =   330
  827.       End
  828.       Begin SSRibbon grbDrawTool 
  829.          BackColor       =   &H00C0C0C0&
  830.          GroupAllowAllUp =   0   'False
  831.          Height          =   330
  832.          HelpContextID   =   38
  833.          Index           =   1
  834.          Left            =   60
  835.          PictureDnChange =   1  'Dither 'PictureUp' Bitmap
  836.          PictureUp       =   FGDRAW.FRX:1DEE
  837.          RoundedCorners  =   0   'False
  838.          Tag             =   "TT:[Arc"
  839.          Top             =   480
  840.          Width           =   330
  841.       End
  842.       Begin Label Label1 
  843.          BackStyle       =   0  'Transparent
  844.          Caption         =   "Keep Zoom Aspect Ratio"
  845.          Height          =   615
  846.          Left            =   345
  847.          TabIndex        =   6
  848.          Top             =   1800
  849.          Width           =   975
  850.       End
  851.       Begin Label lblYPos 
  852.          BackStyle       =   0  'Transparent
  853.          Height          =   270
  854.          Left            =   90
  855.          TabIndex        =   4
  856.          Top             =   2565
  857.          Width           =   1215
  858.       End
  859.       Begin Label lblXPos 
  860.          BackStyle       =   0  'Transparent
  861.          Height          =   240
  862.          Left            =   75
  863.          TabIndex        =   3
  864.          Top             =   2370
  865.          Width           =   1245
  866.       End
  867.    End
  868.    Begin Menu mu_File 
  869.       Caption         =   "&File"
  870.       HelpContextID   =   41
  871.       Begin Menu mu_ClearAll 
  872.          Caption         =   "&New"
  873.          HelpContextID   =   42
  874.       End
  875.       Begin Menu mu_Print 
  876.          Caption         =   "&Print"
  877.       End
  878.       Begin Menu mu_Sep 
  879.          Caption         =   "-"
  880.       End
  881.       Begin Menu mu_Exit 
  882.          Caption         =   "E&xit"
  883.          HelpContextID   =   43
  884.       End
  885.    End
  886.    Begin Menu mu_DrawingTool 
  887.       Caption         =   "&Drawing Tool"
  888.       HelpContextID   =   44
  889.       Begin Menu mu_Tool 
  890.          Caption         =   "&Arrow"
  891.          Checked         =   -1  'True
  892.          HelpContextID   =   45
  893.          Index           =   0
  894.       End
  895.       Begin Menu mu_Tool 
  896.          Caption         =   "&Arc"
  897.          HelpContextID   =   45
  898.          Index           =   1
  899.       End
  900.       Begin Menu mu_Tool 
  901.          Caption         =   "&Chord"
  902.          HelpContextID   =   45
  903.          Index           =   2
  904.       End
  905.       Begin Menu mu_Tool 
  906.          Caption         =   "&Draw Text"
  907.          HelpContextID   =   45
  908.          Index           =   3
  909.       End
  910.       Begin Menu mu_Tool 
  911.          Caption         =   "&Ellipse"
  912.          HelpContextID   =   45
  913.          Index           =   4
  914.       End
  915.       Begin Menu mu_Tool 
  916.          Caption         =   "&Line"
  917.          HelpContextID   =   45
  918.          Index           =   5
  919.       End
  920.       Begin Menu mu_Tool 
  921.          Caption         =   "&Polygon"
  922.          HelpContextID   =   45
  923.          Index           =   6
  924.       End
  925.       Begin Menu mu_Tool 
  926.          Caption         =   "&Pie"
  927.          HelpContextID   =   45
  928.          Index           =   7
  929.       End
  930.       Begin Menu mu_Tool 
  931.          Caption         =   "&Polyline"
  932.          HelpContextID   =   45
  933.          Index           =   8
  934.       End
  935.       Begin Menu mu_Tool 
  936.          Caption         =   "&PolyPolygon"
  937.          HelpContextID   =   45
  938.          Index           =   9
  939.       End
  940.       Begin Menu mu_Tool 
  941.          Caption         =   "&PolyTextOut"
  942.          HelpContextID   =   45
  943.          Index           =   10
  944.       End
  945.       Begin Menu mu_Tool 
  946.          Caption         =   "&Rectangle"
  947.          HelpContextID   =   45
  948.          Index           =   11
  949.       End
  950.       Begin Menu mu_Tool 
  951.          Caption         =   "&Round Rectangle"
  952.          HelpContextID   =   45
  953.          Index           =   12
  954.       End
  955.       Begin Menu mu_Tool 
  956.          Caption         =   "&Text out"
  957.          HelpContextID   =   45
  958.          Index           =   13
  959.       End
  960.       Begin Menu mu_Tool 
  961.          Caption         =   "&Free Hand Draw"
  962.          HelpContextID   =   45
  963.          Index           =   14
  964.       End
  965.       Begin Menu mu_Tool 
  966.          Caption         =   "&Zoom in"
  967.          HelpContextID   =   45
  968.          Index           =   15
  969.       End
  970.       Begin Menu mu_ZoomOut 
  971.          Caption         =   "&Zoom out"
  972.          HelpContextID   =   46
  973.       End
  974.       Begin Menu mu_Delete 
  975.          Caption         =   "&Delete"
  976.          Index           =   16
  977.       End
  978.    End
  979.    Begin Menu mu_View 
  980.       Caption         =   "&View"
  981.       HelpContextID   =   47
  982.       Begin Menu mu_ButtonBar 
  983.          Caption         =   "&ButtonBar"
  984.          Checked         =   -1  'True
  985.          HelpContextID   =   48
  986.       End
  987.       Begin Menu mu_AttribBar 
  988.          Caption         =   "&Attrib Bar"
  989.          Checked         =   -1  'True
  990.          HelpContextID   =   49
  991.       End
  992.       Begin Menu mu_ViewTips 
  993.          Caption         =   "View &Tips"
  994.          Checked         =   -1  'True
  995.          Enabled         =   0   'False
  996.          HelpContextID   =   50
  997.          Visible         =   0   'False
  998.       End
  999.       Begin Menu mu_ViewPicture 
  1000.          Caption         =   "&View Picture"
  1001.          HelpContextID   =   51
  1002.          Visible         =   0   'False
  1003.       End
  1004.    End
  1005.    Begin Menu mu_Help 
  1006.       Caption         =   "&Help"
  1007.       HelpContextID   =   52
  1008.       Begin Menu mu_Contents 
  1009.          Caption         =   "&Contents"
  1010.          HelpContextID   =   53
  1011.          Shortcut        =   {F1}
  1012.          Visible         =   0   'False
  1013.       End
  1014.       Begin Menu mu_HelpHelp 
  1015.          Caption         =   "&How to use Help"
  1016.          HelpContextID   =   54
  1017.          Visible         =   0   'False
  1018.       End
  1019.       Begin Menu mu_Sep1 
  1020.          Caption         =   "-"
  1021.          HelpContextID   =   55
  1022.          Visible         =   0   'False
  1023.       End
  1024.       Begin Menu mu_About 
  1025.          Caption         =   "&About"
  1026.          HelpContextID   =   56
  1027.       End
  1028.    End
  1029. End
  1030. Option Explicit
  1031.  
  1032. Dim CurrTool As Integer
  1033. Dim CurrGraphic As Long
  1034. Const MAX_GRAPHICS = 10000
  1035.  
  1036. Const NUM_COLORS = 24
  1037.  
  1038. Dim AllColors(NUM_COLORS, 3) As Long
  1039. Dim ColorSelect(3) As Long
  1040. Dim ColorSelectIdx(3) As Integer
  1041.  
  1042. Dim ColorRow As Integer
  1043.  
  1044. Dim GraphicHandles(MAX_GRAPHICS) As Long
  1045. Dim GraphicTypes(MAX_GRAPHICS) As Integer
  1046. Dim MaxHandle As Integer
  1047.  
  1048. Dim NumPoints As Integer
  1049. Dim CurrPoint As Integer
  1050.  
  1051. Dim initx As Double
  1052. Dim inity As Double
  1053.  
  1054. Dim CurrBorderWidth As Integer
  1055. Dim CurrBorderStyle As Integer
  1056. Dim CurrBorderColor
  1057.  
  1058. Dim CurrFIllStyle As Integer
  1059. Dim CurrFillColor
  1060.  
  1061. Dim CurrFontHeight As Integer
  1062. Dim CurrFontWidth  As Integer
  1063. Dim CurrFontEscapement As Integer
  1064. Dim CurrFontOrientation  As Integer
  1065. Dim CurrFontBold As Integer
  1066. Dim CurrFontItalic As Integer
  1067. Dim CurrFontUnderline As Integer
  1068. Dim CurrFontStrikeOut As Integer
  1069. Dim CurrFontFaceName As String
  1070. Dim CurrFontColor
  1071.  
  1072. Dim CurrBackColor
  1073. Dim CurrBackStyle As Integer
  1074.  
  1075. Dim CurrVisible As Integer
  1076.  
  1077. Dim MarkPicture As Long
  1078. Dim MarkObjectIdx As Integer
  1079.  
  1080. Dim MarkPolyPolygon As Long
  1081. Dim MarkStartIdx As Long
  1082. Dim MarkEndIdx As Long
  1083. Dim MarkPoints() As PointAPI
  1084. Dim MarkCount() As Integer
  1085. Dim MarkPointIdx As Integer
  1086. Dim EditDrag As Integer
  1087.  
  1088. Dim CanSetAttribs As Integer
  1089.  
  1090. Dim CanScroll As Integer
  1091. Dim PolyPolygonCountIdx As Integer
  1092. Dim PolyCountStartIdx As Integer
  1093.  
  1094. Sub AddPrinterPage ()
  1095.     Dim dummy As Long
  1096.     Dim X1 As Double
  1097.     Dim Y1 As Double
  1098.     Dim X2 As Double
  1099.     Dim Y2 As Double
  1100.     Dim S1 As Double
  1101.     Dim S2 As Double
  1102.  
  1103.     'picDrawSpace.BackColor = QBColor(8)
  1104.     Printer.ScaleMode = 3
  1105.     X1 = Printer.ScaleLeft
  1106.     Y1 = Printer.ScaleTop
  1107.     X2 = X1 + Printer.ScaleWidth
  1108.     Y2 = Y1 + Printer.ScaleHeight
  1109.     dummy = SCReateRectangle(FG1, X1, Y1, X2, Y2)
  1110.     SetFillStyle dummy, FS_SOLID
  1111.     SetFillColor dummy, QBColor(15)
  1112.     SetBorderStyle dummy, BS_SOLID
  1113.     SetBorderColor dummy, QBColor(7)
  1114.     S1 = (X2 - X1) / picDrawSpace.ScaleWidth
  1115.     S2 = (Y2 - Y1) / picDrawSpace.ScaleHeight
  1116.     If S2 > S1 Then S1 = S2
  1117.     SetPlacement FG1, 0, 0, (X2 - X1) / S1, (Y2 - Y1) / S1
  1118.     SetScale FG1, X1, Y1, X2, Y2
  1119. End Sub
  1120.  
  1121. Sub CancelMark ()
  1122.     If MarkPicture = -1 Then
  1123.         Exit Sub
  1124.     End If
  1125.     If GetVisible(MarkPicture) Then
  1126.         DoPaint MarkPicture
  1127.         SetVisible MarkPicture, False
  1128.         MarkObjectIdx = -1
  1129.         RemoveObject MarkPicture, picDrawSpace.hDC, 0, True, QBColor(0)
  1130.         MarkPicture = -1
  1131.     End If
  1132. End Sub
  1133.  
  1134. Sub cdmZoomOut_Click ()
  1135.     Dim TD1 As Double
  1136.     Dim TD2 As Double
  1137.     Dim ThePicHandle As Long
  1138.  
  1139.     ThePicHandle = FG1
  1140.     CancelMark
  1141.     TD1 = SGetX(ThePicHandle, 3)
  1142.     TD2 = SGetX(ThePicHandle, 4)
  1143.     SSetX FG1, 3, TD1 - TD2 / 2#
  1144.     SSetX FG1, 4, TD2 * 2#
  1145.     TD1 = SGetY(ThePicHandle, 3)
  1146.     TD2 = SGetY(ThePicHandle, 4)
  1147.     SSetY FG1, 3, TD1 - TD2 / 2#
  1148.     SSetY FG1, 4, TD2 * 2#
  1149.     picDrawSpace.Refresh
  1150. End Sub
  1151.  
  1152. Sub cmdDeleteGraphic_Click ()
  1153.     Dim i As Integer
  1154.     Dim DeleteHandle As Long
  1155.  
  1156.     If (MarkObjectIdx >= 0) And CanSetAttribs Then
  1157.         ' Remeber the object handle
  1158.         DeleteHandle = GraphicHandles(MarkObjectIdx)
  1159.         ' Move all of the objets down one
  1160.         For i = MarkObjectIdx To MaxHandle - 2
  1161.             GraphicHandles(i) = GraphicHandles(i + 1)
  1162.             GraphicTypes(i) = GraphicTypes(i + 1)
  1163.         Next i
  1164.         CancelMark
  1165.         MaxHandle = MaxHandle - 1
  1166.         RemoveObject DeleteHandle, picDrawSpace.hDC, 1, True, picDrawSpace.BackColor
  1167.     End If
  1168. End Sub
  1169.  
  1170. Sub cmdPageDown_Click ()
  1171.     Dim SHeight As Double
  1172.     Dim NewY As Double
  1173.     Dim ThePicHandle As Long
  1174.  
  1175.     ThePicHandle = FG1
  1176.     NewY = SGetY(ThePicHandle, 3)
  1177.     SHeight = SGetY(ThePicHandle, 4)
  1178.     SSetY FG1, 3, NewY + SHeight / 3
  1179.     picDrawSpace.Refresh
  1180. End Sub
  1181.  
  1182. Sub cmdPageDown_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1183.     Dim T
  1184.  
  1185.     CanScroll = True
  1186.     CancelMark
  1187.     T = Timer
  1188.     ' Wait 1 second before starting to scroll
  1189.     While (T + 1#) > Timer
  1190.         DoEvents
  1191.         If Not CanScroll Then Exit Sub
  1192.     Wend
  1193.     T = Timer
  1194.     ' Scroll until mouse up event
  1195.     While CanScroll
  1196.         ' wait 1/5 th second between each scroll
  1197.         While (T + .2) > Timer
  1198.             DoEvents
  1199.             If Not CanScroll Then Exit Sub
  1200.         Wend
  1201.         T = Timer
  1202.         cmdPageDown = True
  1203.     Wend
  1204. End Sub
  1205.  
  1206. Sub cmdPageDown_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1207.     CanScroll = False
  1208. End Sub
  1209.  
  1210. Sub cmdPageLeft_Click ()
  1211.     Dim SWidth As Double
  1212.     Dim NewX As Double
  1213.     Dim ThePicHandle As Long
  1214.  
  1215.     ThePicHandle = FG1
  1216.     NewX = SGetX(ThePicHandle, 3)
  1217.     SWidth = SGetX(ThePicHandle, 4)
  1218.     SSetX FG1, 3, NewX - SWidth / 3
  1219.     picDrawSpace.Refresh
  1220. End Sub
  1221.  
  1222. Sub cmdPageLeft_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1223.     Dim T
  1224.  
  1225.     CanScroll = True
  1226.     CancelMark
  1227.     T = Timer
  1228.     ' Wait 1 second before starting to scroll
  1229.     While (T + 1#) > Timer
  1230.         DoEvents
  1231.         If Not CanScroll Then Exit Sub
  1232.     Wend
  1233.     T = Timer
  1234.     ' Scroll until mouse up event
  1235.     While CanScroll
  1236.         ' wait 1/5 th second between each scroll
  1237.         While (T + .2) > Timer
  1238.             DoEvents
  1239.             If Not CanScroll Then Exit Sub
  1240.         Wend
  1241.         T = Timer
  1242.         cmdPageLeft = True
  1243.     Wend
  1244. End Sub
  1245.  
  1246. Sub cmdPageLeft_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1247.     CanScroll = False
  1248. End Sub
  1249.  
  1250. Sub cmdPageRight_Click ()
  1251.     Dim SWidth As Double
  1252.     Dim NewX As Double
  1253.     Dim ThePicHandle As Long
  1254.  
  1255.     ThePicHandle = FG1
  1256.     NewX = SGetX(ThePicHandle, 3)
  1257.     SWidth = SGetX(ThePicHandle, 4)
  1258.     SSetX FG1, 3, NewX + SWidth / 3
  1259.     picDrawSpace.Refresh
  1260. End Sub
  1261.  
  1262. Sub cmdPageRight_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1263.     Dim T
  1264.  
  1265.     CanScroll = True
  1266.     CancelMark
  1267.     T = Timer
  1268.     ' Wait 1 second before starting to scroll
  1269.     While (T + 1#) > Timer
  1270.         DoEvents
  1271.         If Not CanScroll Then Exit Sub
  1272.     Wend
  1273.     T = Timer
  1274.     ' Scroll until mouse up event
  1275.     While CanScroll
  1276.         ' wait 1/5 th second between each scroll
  1277.         While (T + .2) > Timer
  1278.             DoEvents
  1279.             If Not CanScroll Then Exit Sub
  1280.         Wend
  1281.         T = Timer
  1282.         cmdPageRight = True
  1283.     Wend
  1284. End Sub
  1285.  
  1286. Sub cmdPageRight_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1287.     CanScroll = False
  1288. End Sub
  1289.  
  1290. Sub cmdPageUp_Click ()
  1291.     Dim SHeight As Double
  1292.     Dim NewY As Double
  1293.     Dim ThePicHandle As Long
  1294.  
  1295.     ThePicHandle = FG1
  1296.     NewY = SGetY(ThePicHandle, 3)
  1297.     SHeight = SGetY(ThePicHandle, 4)
  1298.     SSetY FG1, 3, NewY - SHeight / 3
  1299.     picDrawSpace.Refresh
  1300. End Sub
  1301.  
  1302. Sub cmdPageUp_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1303.     Dim T
  1304.  
  1305.     CanScroll = True
  1306.     CancelMark
  1307.     T = Timer
  1308.     ' Wait 1 second before starting to scroll
  1309.     While (T + 1#) > Timer
  1310.         DoEvents
  1311.         If Not CanScroll Then Exit Sub
  1312.     Wend
  1313.     T = Timer
  1314.     ' Scroll until mouse up event
  1315.     While CanScroll
  1316.         ' wait 1/5 th second between each scroll
  1317.         While (T + .2) > Timer
  1318.             DoEvents
  1319.             If Not CanScroll Then Exit Sub
  1320.         Wend
  1321.         T = Timer
  1322.         cmdPageUp = True
  1323.     Wend
  1324. End Sub
  1325.  
  1326. Sub cmdPageUp_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1327.     CanScroll = False
  1328. End Sub
  1329.  
  1330. Sub cmdSelectFont_Click ()
  1331.     CMDialog1.FontName = CurrFontFaceName
  1332.     CMDialog1.FontBold = CurrFontBold
  1333.     CMDialog1.FontItalic = CurrFontItalic
  1334.     CMDialog1.FontSize = -CurrFontHeight
  1335.     CMDialog1.FontStrikeThru = CurrFontStrikeOut
  1336.     CMDialog1.FontUnderLine = CurrFontUnderline
  1337.     CMDialog1.Flags = CF_BOTH Or CF_EFFECTS Or CF_APPLY
  1338.     'CMDialog1.Color = TheFontColor
  1339.     CMDialog1.Action = 4
  1340.     CurrFontFaceName = CMDialog1.FontName
  1341.     CurrFontBold = CMDialog1.FontBold
  1342.     CurrFontItalic = CMDialog1.FontItalic
  1343.     CurrFontHeight = -CMDialog1.FontSize
  1344.     CurrFontStrikeOut = CMDialog1.FontStrikeThru
  1345.     CurrFontUnderline = CMDialog1.FontUnderLine
  1346.     SetMarkAttribs
  1347. End Sub
  1348.  
  1349. Sub cmdStepDown_Click ()
  1350.     Dim SHeight As Double
  1351.     Dim NewY As Double
  1352.     Dim PHeight As Double
  1353.     Dim ThePicHandle As Long
  1354.  
  1355.     ThePicHandle = FG1
  1356.     NewY = SGetY(ThePicHandle, 3)
  1357.     SHeight = SGetY(ThePicHandle, 4)
  1358.     PHeight = SGetY(ThePicHandle, 2)
  1359.     SSetY FG1, 3, NewY + SHeight / PHeight
  1360.     picDrawSpace.Refresh
  1361. End Sub
  1362.  
  1363. Sub cmdStepDown_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1364.     Dim T
  1365.  
  1366.     CanScroll = True
  1367.     CancelMark
  1368.     T = Timer
  1369.     ' Wait 1 second before starting to scroll
  1370.     While (T + 1#) > Timer
  1371.         DoEvents
  1372.         If Not CanScroll Then Exit Sub
  1373.     Wend
  1374.     T = Timer
  1375.     ' Scroll until mouse up event
  1376.     While CanScroll
  1377.         ' wait 1/5 th second between each scroll
  1378.         While (T + .2) > Timer
  1379.             DoEvents
  1380.             If Not CanScroll Then Exit Sub
  1381.         Wend
  1382.         T = Timer
  1383.         cmdStepDown = True
  1384.     Wend
  1385. End Sub
  1386.  
  1387. Sub cmdStepDown_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1388.     CanScroll = False
  1389. End Sub
  1390.  
  1391. Sub cmdStepLeft_Click ()
  1392.     Dim SWidth As Double
  1393.     Dim NewX As Double
  1394.     Dim PWidth As Double
  1395.     Dim ThePicHandle As Long
  1396.  
  1397.     ThePicHandle = FG1
  1398.     NewX = SGetX(ThePicHandle, 3)
  1399.     SWidth = SGetX(ThePicHandle, 4)
  1400.     PWidth = SGetX(ThePicHandle, 2)
  1401.     SSetX FG1, 3, NewX - SWidth / PWidth
  1402.     picDrawSpace.Refresh
  1403. End Sub
  1404.  
  1405. Sub cmdStepLeft_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1406.     Dim T
  1407.  
  1408.     CanScroll = True
  1409.     CancelMark
  1410.     T = Timer
  1411.     ' Wait 1 second before starting to scroll
  1412.     While (T + 1#) > Timer
  1413.         DoEvents
  1414.         If Not CanScroll Then Exit Sub
  1415.     Wend
  1416.     T = Timer
  1417.     ' Scroll until mouse up event
  1418.     While CanScroll
  1419.         ' wait 1/5 th second between each scroll
  1420.         While (T + .2) > Timer
  1421.             DoEvents
  1422.             If Not CanScroll Then Exit Sub
  1423.         Wend
  1424.         T = Timer
  1425.         cmdStepLeft = True
  1426.     Wend
  1427. End Sub
  1428.  
  1429. Sub cmdStepLeft_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1430.     CanScroll = False
  1431. End Sub
  1432.  
  1433. Sub cmdStepRight_Click ()
  1434.     Dim SWidth As Double
  1435.     Dim NewX As Double
  1436.     Dim PWidth As Double
  1437.     Dim ThePicHandle As Long
  1438.  
  1439.     ThePicHandle = FG1
  1440.     NewX = SGetX(ThePicHandle, 3)
  1441.     SWidth = SGetX(ThePicHandle, 4)
  1442.     PWidth = SGetX(ThePicHandle, 2)
  1443.     SSetX FG1, 3, NewX + SWidth / PWidth
  1444.     picDrawSpace.Refresh
  1445. End Sub
  1446.  
  1447. Sub cmdStepRight_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1448.     Dim T
  1449.  
  1450.     CanScroll = True
  1451.     CancelMark
  1452.     T = Timer
  1453.     ' Wait 1 second before starting to scroll
  1454.     While (T + 1#) > Timer
  1455.         DoEvents
  1456.         If Not CanScroll Then Exit Sub
  1457.     Wend
  1458.     T = Timer
  1459.     ' Scroll until mouse up event
  1460.     While CanScroll
  1461.         ' wait 1/5 th second between each scroll
  1462.         While (T + .2) > Timer
  1463.             DoEvents
  1464.             If Not CanScroll Then Exit Sub
  1465.         Wend
  1466.         T = Timer
  1467.         cmdStepRight = True
  1468.     Wend
  1469. End Sub
  1470.  
  1471. Sub cmdStepRight_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1472.     CanScroll = False
  1473. End Sub
  1474.  
  1475. Sub cmdStepUp_Click ()
  1476.     Dim SHeight As Double
  1477.     Dim NewY As Double
  1478.     Dim PHeight As Double
  1479.     Dim ThePicHandle As Long
  1480.  
  1481.     ThePicHandle = FG1
  1482.     NewY = SGetY(ThePicHandle, 3)
  1483.     SHeight = SGetY(ThePicHandle, 4)
  1484.     PHeight = SGetY(ThePicHandle, 2)
  1485.     SSetY FG1, 3, NewY - SHeight / PHeight
  1486.     picDrawSpace.Refresh
  1487. End Sub
  1488.  
  1489. Sub cmdStepUp_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1490.     Dim T
  1491.  
  1492.     CanScroll = True
  1493.     CancelMark
  1494.     T = Timer
  1495.     ' Wait 1 second before starting to scroll
  1496.     While (T + 1#) > Timer
  1497.         DoEvents
  1498.         If Not CanScroll Then Exit Sub
  1499.     Wend
  1500.     T = Timer
  1501.     ' Scroll until mouse up event
  1502.     While CanScroll
  1503.         ' wait 1/5 th second between each scroll
  1504.         While (T + .2) > Timer
  1505.             DoEvents
  1506.             If Not CanScroll Then Exit Sub
  1507.         Wend
  1508.         T = Timer
  1509.         cmdStepUp = True
  1510.     Wend
  1511. End Sub
  1512.  
  1513. Sub cmdStepUp_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  1514.     CanScroll = False
  1515. End Sub
  1516.  
  1517. Sub DoHitTesting (Shift As Integer, X As Double, Y As Double)
  1518.     Dim i As Integer
  1519.  
  1520.     CanSetAttribs = False
  1521.     ' Iterate through all of the objects and check if the point is in the bounding rectangle
  1522.     If (Shift And 4) <> 4 Then
  1523.         MarkObjectIdx = -1
  1524.     End If
  1525.     For i = 0 To MaxHandle - 1
  1526.         If GraphicContainsPoint(GraphicHandles(i), GraphicTypes(i), X, Y) Then
  1527.             If i > MarkObjectIdx Then
  1528.                 MarkObjectIdx = i
  1529.                 MarkGraphic GraphicHandles(i), GraphicTypes(i)
  1530.                 GetGraphicAttribs GraphicHandles(i)
  1531.                 'DoEvents
  1532.                 CanSetAttribs = True
  1533.                 Exit Sub
  1534.             End If
  1535.         End If
  1536.     Next i
  1537.     ' We only get here if no object found yet
  1538.     ' If the ALT key is down reset the markidx and try again
  1539.     If ((Shift And 4) = 4) And (MarkObjectIdx <> -1) Then
  1540.         MarkObjectIdx = -1
  1541.         DoHitTesting Shift, X, Y
  1542.         Exit Sub
  1543.     End If
  1544.     ' We only get here if no object found at all
  1545.     ' so cancel any marks
  1546.     CancelMark
  1547. End Sub
  1548.  
  1549. Sub DoMarkPosCheck (X As Single, Y As Single)
  1550.     Dim i As Integer
  1551.     Dim X1 As Double
  1552.     Dim Y1 As Double
  1553.  
  1554.     If MarkPicture = -1 Then
  1555.         ' The mark picture has not been initialised so exit
  1556.         Exit Sub
  1557.     End If
  1558.     If MarkObjectIdx = -1 Then
  1559.         ' There is no object that is currently marked
  1560.         Exit Sub
  1561.     End If
  1562.     For i = MarkStartIdx To MarkEndIdx
  1563.         ' Iterate through all of the point
  1564.         X1 = MarkPoints((i - MarkStartIdx) * 5).X
  1565.         Y1 = MarkPoints((i - MarkStartIdx) * 5).Y
  1566.         If (X >= X1) And (X < (X1 + 10)) Then
  1567.             If (Y >= Y1) And (Y < (Y1 + 10)) Then
  1568.                 ' If the cursor is over a point then change the mouse pointer
  1569.                 MarkPointIdx = i
  1570.                 If (picDrawSpace.MousePointer <> 5) Then
  1571.                     picDrawSpace.MousePointer = 5
  1572.                 End If
  1573.                 Exit Sub
  1574.             End If
  1575.         End If
  1576.     Next i
  1577.     ' No point was found so set the mouse pointer back
  1578.     MarkPointIdx = -1
  1579.     If (picDrawSpace.MousePointer = 5) Then
  1580.         picDrawSpace.MousePointer = 0
  1581.         Exit Sub
  1582.     End If
  1583.  
  1584. End Sub
  1585.  
  1586. Sub Form_Activate ()
  1587.     ' Set the initial Placement and Scale settings to the form's
  1588.     'SetScale FG1, 0, 0, picDrawSpace.ScaleWidth, picDrawSpace.ScaleHeight
  1589.     'SetPlacement FG1, 0, 0, picDrawSpace.ScaleWidth, picDrawSpace.ScaleHeight
  1590.     ' The following code is used for debugging only
  1591.     'Refresh
  1592.     'picDrawSpace.Refresh
  1593.     'picColorBtns_Paint
  1594.     'DoEvents
  1595.     'DoEvents
  1596.     'DoEvents
  1597.     'DoEvents
  1598.     'DoEvents
  1599.     'DoEvents
  1600.     'DoEvents
  1601.     'DoEvents
  1602.     'Unload Me
  1603. End Sub
  1604.  
  1605. Sub Form_Load ()
  1606.     CurrTool = 0    ' Arrow tool
  1607.     GraphicHandles(0) = 1
  1608.     GraphicTypes(0) = G_GLOBALPIC
  1609.     MaxHandle = 1
  1610.     NumPoints = 0
  1611.     CurrPoint = 0
  1612.     CurrGraphic = -1
  1613.     InitAttributes
  1614.     InitColors
  1615.     MarkPicture = -1
  1616.     MarkObjectIdx = -1
  1617.     MarkPolyPolygon = -1
  1618.     CanSetAttribs = False
  1619.     MarkPointIdx = -1
  1620.     EditDrag = False
  1621.     CanScroll = False
  1622.     SetFontPointHeight FG1, 20
  1623.     AddPrinterPage
  1624. End Sub
  1625.  
  1626. Sub Form_Resize ()
  1627.     If WindowState = 1 Then
  1628.         Exit Sub
  1629.     End If
  1630.     pnlAttribBar.Left = 0
  1631.     pnlAttribBar.Top = ScaleHeight - pnlAttribBar.Height
  1632.     pnlAttribBar.Width = ScaleWidth
  1633.     pnlButtonBar.Left = 0
  1634.     pnlButtonBar.Top = 0
  1635.     pnlButtonBar.Height = ScaleHeight - pnlAttribBar.Height * (-pnlAttribBar.Visible)
  1636.     picDrawSpace.Left = pnlButtonBar.Width * (-pnlButtonBar.Visible)
  1637.     picDrawSpace.Top = 0
  1638.     picDrawSpace.Width = ScaleWidth - pnlButtonBar.Width * (-pnlButtonBar.Visible)
  1639.     picDrawSpace.Height = ScaleHeight - pnlAttribBar.Height * (-pnlAttribBar.Visible)
  1640.     picColorBtns.Width = pnlAttribBar.Width * Screen.TwipsPerPixelX - picColorBtns.Left - (pnlAttribBar.BevelWidth * 2 + pnlAttribBar.BorderWidth) * Screen.TwipsPerPixelX
  1641.     ResizeColorButtons
  1642.     picDrawSpace.Refresh
  1643.     pnlAttribBar.Refresh
  1644. End Sub
  1645.  
  1646. Sub Form_Unload (Cancel As Integer)
  1647.     End
  1648. End Sub
  1649.  
  1650. Sub GetGraphicAttribs (TheGRaphicHandle As Long)
  1651.     Dim TempColor
  1652.     Dim TempBorderStyle As Integer
  1653.     Dim TempBorderWidth As Integer
  1654.     Dim TempFillStyle As Integer
  1655.     Dim TempBackStyle As Integer
  1656.  
  1657.     TempColor = GetBorderColor(TheGRaphicHandle)
  1658.     SetSelectedColor TempColor, 0
  1659.     TempColor = GetFillColor(TheGRaphicHandle)
  1660.     SetSelectedColor TempColor, 1
  1661.     TempColor = GetFontColor(TheGRaphicHandle)
  1662.     SetSelectedColor TempColor, 2
  1663.     TempColor = GetBackColor(TheGRaphicHandle)
  1664.     SetSelectedColor TempColor, 3
  1665.     TempBorderStyle = GetBorderStyle(TheGRaphicHandle)
  1666.     SetSelectedBorderStyle TempBorderStyle
  1667.     TempBorderWidth = -GetBorderWidth(TheGRaphicHandle)
  1668.     SetSelectBorderWidth TempBorderWidth
  1669.     TempFillStyle = GetFillStyle(TheGRaphicHandle)
  1670.     SetSelectFillStyle TempFillStyle
  1671.     TempBackStyle = GetBackStyle(TheGRaphicHandle)
  1672.     If (TempBackStyle = 1) Then
  1673.         grbTransparent = True
  1674.     Else
  1675.         grbOpaque = True
  1676.     End If
  1677.     CurrFontHeight = GetFontPointHeight(TheGRaphicHandle)
  1678.     If GetFontWeight(TheGRaphicHandle) > 400 Then
  1679.         CurrFontBold = True
  1680.     Else
  1681.         CurrFontBold = False
  1682.     End If
  1683.     CurrFontItalic = GetFontItalic(TheGRaphicHandle)
  1684.     CurrFontUnderline = GetFontUnderline(TheGRaphicHandle)
  1685.     CurrFontStrikeOut = GetFontStrikeOut(TheGRaphicHandle)
  1686.     CurrFontFaceName = GetFontFaceName(TheGRaphicHandle)
  1687. End Sub
  1688.  
  1689. Function GraphicContainsPoint (GraphicHandle As Long, GraphicType As Integer, X As Double, Y As Double) As Integer
  1690.     Dim ContainsPoint As Integer
  1691.     Dim X1 As Double
  1692.     Dim X2 As Double
  1693.     Dim Y1 As Double
  1694.     Dim Y2 As Double
  1695.     Dim dummy As Double
  1696.     Dim i As Integer
  1697.     Dim tx As Double
  1698.     Dim ty As Double
  1699.     Dim NumPoints As Integer
  1700.     Dim ThehDC As Integer
  1701.     Dim TheHandle As Long
  1702.     Dim TheText As String
  1703.  
  1704.     X1 = -1
  1705.     Y1 = -1
  1706.     X2 = -1
  1707.     Y2 = -1
  1708.  
  1709.     If GraphicHandle < 0 Then
  1710.         GraphicContainsPoint = False
  1711.         Exit Function
  1712.     End If
  1713.     ContainsPoint = False
  1714.     Select Case GraphicType
  1715.         Case G_ARC, G_CHORD, G_ELLIPSE, G_LINE, G_PIE, G_RECTANGLE, G_ROUNDRECT:
  1716.             X1 = SGetX(GraphicHandle, 1)
  1717.             X2 = SGetX(GraphicHandle, 2)
  1718.             Y1 = SGetY(GraphicHandle, 1)
  1719.             Y2 = SGetY(GraphicHandle, 2)
  1720.         Case G_DRAWTEXT
  1721.             X1 = SGetX(GraphicHandle, 1)
  1722.             X2 = SGetX(GraphicHandle, 2)
  1723.             Y1 = SGetY(GraphicHandle, 1)
  1724.             Y2 = SGetY(GraphicHandle, 2)
  1725.             X2 = X1 + X2
  1726.             Y2 = Y1 + Y2
  1727.         Case G_TEXTOut
  1728.             X1 = SGetX(GraphicHandle, 1)
  1729.             Y1 = SGetY(GraphicHandle, 1)
  1730.             TheText = GetString(GraphicHandle)
  1731.             TheHandle = FG1
  1732.             ThehDC = picDrawSpace.hDC
  1733.             SetFontPointHeight FG1, GetFontPointHeight(GraphicHandle)
  1734.             X2 = X1 + Abs(GetScaleTextWidth(TheHandle, ThehDC, TheText))
  1735.             Y2 = Y1 + Abs(GetScaleTextHeight(TheHandle, ThehDC, TheText))
  1736.         Case G_POLYTEXTOut:
  1737.             NumPoints = GetNumPoints(GraphicHandle)
  1738.             For i = 1 To NumPoints - 1
  1739.                 X1 = SGetX(GraphicHandle, i)
  1740.                 Y1 = SGetY(GraphicHandle, i)
  1741.                 TheText = GetPTextAt(GraphicHandle, i)
  1742.                 TheHandle = FG1
  1743.                 ThehDC = picDrawSpace.hDC
  1744.                 SetFontPointHeight FG1, GetFontPointHeight(GraphicHandle)
  1745.                 X2 = X1 + Abs(GetScaleTextWidth(TheHandle, ThehDC, TheText))
  1746.                 Y2 = Y1 + Abs(GetScaleTextHeight(TheHandle, ThehDC, TheText))
  1747.                 If (X >= X1) And (X <= X2) And (Y >= Y1) And (Y <= Y2) Then
  1748.                     i = NumPoints
  1749.                 End If
  1750.             Next i
  1751.         Case G_POLYGON, G_POLYLINE, G_POLYPOLYGON, G_FREEHAND:
  1752.             NumPoints = GetNumPoints(GraphicHandle)
  1753.             If NumPoints > 1 Then
  1754.                 X1 = SGetX(GraphicHandle, 0)
  1755.                 X2 = SGetX(GraphicHandle, 1)
  1756.                 Y1 = SGetY(GraphicHandle, 0)
  1757.                 Y2 = SGetY(GraphicHandle, 1)
  1758.                 For i = 2 To NumPoints - 1
  1759.                     tx = SGetX(GraphicHandle, i)
  1760.                     ty = SGetY(GraphicHandle, i)
  1761.                     If tx < X1 Then X1 = tx
  1762.                     If tx > X2 Then X2 = tx
  1763.                     If ty < Y1 Then Y1 = ty
  1764.                     If ty > Y2 Then Y2 = ty
  1765.                 Next i
  1766.             End If
  1767.     End Select
  1768.  
  1769.     If (X1 > X2) Then
  1770.         dummy = X1
  1771.         X1 = X2
  1772.         X2 = dummy
  1773.     End If
  1774.     If (Y1 > Y2) Then
  1775.         dummy = Y1
  1776.         Y1 = Y2
  1777.         Y2 = dummy
  1778.     End If
  1779.     If (X >= X1) And (X <= X2) And (Y >= Y1) And (Y <= Y2) Then
  1780.         ContainsPoint = True
  1781.     End If
  1782.     GraphicContainsPoint = ContainsPoint
  1783. End Function
  1784.  
  1785. Sub grbDrawTool_Click (Index As Integer, Value As Integer)
  1786.     Dim i As Integer
  1787.  
  1788.     CurrTool = Index
  1789.     NumPoints = 0
  1790.     CurrPoint = 0
  1791.     CurrGraphic = -1
  1792.     CancelMark
  1793.     ' Clear all of the tools checks
  1794.     For i = 0 To 15
  1795.         mu_Tool(i).Checked = False
  1796.     Next i
  1797.     ' Check the new tool
  1798.     mu_Tool(Index).Checked = True
  1799.     If (Index = 0) Or (Index = 15) Then
  1800.         picDrawSpace.MousePointer = 0
  1801.     Else
  1802.         picDrawSpace.MousePointer = 2
  1803.     End If
  1804. End Sub
  1805.  
  1806. Sub grbOpaque_Click (Value As Integer)
  1807.     If Value Then
  1808.         CurrBackStyle = BKS_OPAQUE
  1809.         SetMarkAttribs
  1810.     End If
  1811. End Sub
  1812.  
  1813. Sub grbTransparent_Click (Value As Integer)
  1814.     If Value Then
  1815.         CurrBackStyle = BKS_TRANSPARENT
  1816.         SetMarkAttribs
  1817.     End If
  1818. End Sub
  1819.  
  1820. Sub InitAttributes ()
  1821.     CurrBorderColor = QBColor(0)
  1822.     CurrBorderStyle = BS_SOLID
  1823.     CurrBorderWidth = 0
  1824.     CurrFillColor = QBColor(0)
  1825.     CurrFIllStyle = FS_HOLLOW
  1826.     CurrBackColor = QBColor(0)
  1827.     CurrBackStyle = BKS_TRANSPARENT
  1828.     CurrFontColor = QBColor(0)
  1829.     CurrFontFaceName = "System"
  1830.     CurrFontHeight = 0
  1831.     CurrFontItalic = False
  1832.     CurrFontStrikeOut = False
  1833.     CurrFontUnderline = False
  1834.     CurrFontBold = False
  1835. End Sub
  1836.  
  1837. Sub InitColors ()
  1838.     Dim i As Integer
  1839.     Dim j As Integer
  1840.     Dim CurrBtn As Long
  1841.     Dim BtnWidth As Integer
  1842.     Dim RGBVal As Integer
  1843.     Dim BtnHeight As Integer
  1844.  
  1845.     BtnWidth = picColorBtns.ScaleWidth / NUM_COLORS
  1846.     BtnHeight = picColorBtns.ScaleHeight / 4
  1847.     ' Create rectangles for all of the colors
  1848.     For j = 0 To 3
  1849.         For i = 0 To (NUM_COLORS - 1)
  1850.             CurrBtn = CReateRectangle(FG2, i * BtnWidth, j * BtnHeight, (i + 1) * BtnWidth, (j + 1) * BtnHeight - 2)
  1851.             SetFillStyle CurrBtn, 0
  1852.             'SetDrawMode CurrBtn, 13
  1853.             If (i > 15) Then
  1854.                 ' Generate a Custom color
  1855.                 RGBVal = (NUM_COLORS - i) * 256 / (NUM_COLORS - 14)
  1856.                 SetFillColor CurrBtn, RGB(RGBVal, RGBVal, RGBVal)
  1857.                 SetBorderColor CurrBtn, RGB(RGBVal, RGBVal, RGBVal)
  1858.             Else
  1859.                 ' Generate a VB Color
  1860.                 SetFillColor CurrBtn, QBColor(i)
  1861.                 SetBorderColor CurrBtn, QBColor(i)
  1862.             End If
  1863.             AllColors(i, j) = CurrBtn
  1864.         Next i
  1865.     Next j
  1866.     ' Create the color selection indicator rectangles
  1867.     For j = 0 To 3
  1868.         ColorSelect(j) = CReateRectangle(FG2, 0, j * BtnHeight, BtnWidth, (j + 1) * BtnHeight - 2)
  1869.         SetFillStyle ColorSelect(j), 1
  1870.         SetBorderColor ColorSelect(j), QBColor(0)
  1871.         SetBorderWidth ColorSelect(j), BtnWidth / 4
  1872.         SetDrawMode ColorSelect(j), 10
  1873.         ColorSelectIdx(j) = 0
  1874.     Next j
  1875.  
  1876. End Sub
  1877.  
  1878. Sub MarkGraphic (GraphicHandle As Long, GraphicType As Integer)
  1879.     Dim X1 As Double
  1880.     Dim Y1 As Double
  1881.     Dim X2 As Double
  1882.     Dim Y2 As Double
  1883.     Dim dummy As Long
  1884.     Dim NumIdxs As Integer
  1885.     Dim i As Integer
  1886.  
  1887.     If MarkPicture = -1 Then
  1888.         MarkPicture = CreatePicture(FG1)
  1889.         ReDim MarkPoints(2)
  1890.         ReDim MarkCount(0)
  1891.         MarkCount(0) = 2
  1892.         MarkPolyPolygon = BCreatePolyPolygon(MarkPicture, MarkPoints(), MarkCount())
  1893.         SetDrawMode MarkPolyPolygon, 10
  1894.         SetFillStyle MarkPolyPolygon, FS_SOLID
  1895.         SetFillColor MarkPolyPolygon, QBColor(0)
  1896.         SetPreserveAttribs MarkPolyPolygon, 1
  1897.         SetBorderStyle MarkPolyPolygon, BS_TRANSPARENT
  1898.         SetBorderWidth MarkPolyPolygon, 0
  1899.         SetBackStyle MarkPolyPolygon, BKS_TRANSPARENT
  1900.     End If
  1901.     ' Undraw any marks in the picture
  1902.     If GetVisible(MarkPicture) Then
  1903.         DoPaint MarkPicture
  1904.     End If
  1905.     SetVisible MarkPicture, True
  1906.     Select Case GraphicType
  1907.         Case G_ARC, G_CHORD, G_PIE
  1908.             MarkStartIdx = 1
  1909.             MarkEndIdx = 4
  1910.         Case G_ELLIPSE, G_LINE, G_RECTANGLE
  1911.             MarkStartIdx = 1
  1912.             MarkEndIdx = 2
  1913.         Case G_ROUNDRECT:
  1914.             MarkStartIdx = 1
  1915.             MarkEndIdx = 3
  1916.         Case G_TEXTOut:
  1917.             MarkStartIdx = 1
  1918.             MarkEndIdx = 1
  1919.         Case G_DRAWTEXT:
  1920.             MarkStartIdx = 1
  1921.             MarkEndIdx = 2
  1922.         Case G_POLYGON, G_POLYLINE, G_POLYPOLYGON, G_FREEHAND:
  1923.             MarkStartIdx = 0
  1924.             MarkEndIdx = GetNumPoints(GraphicHandle) - 1
  1925.         Case G_POLYTEXTOut:
  1926.             MarkStartIdx = 1
  1927.             MarkEndIdx = GetNumPoints(GraphicHandle) - 1
  1928.     End Select
  1929.     
  1930.     ' Caclulate the number of points
  1931.     NumIdxs = MarkEndIdx - MarkStartIdx
  1932.     ' There are five physical points per logical point
  1933.     ReDim MarkPoints((NumIdxs + 3) * 5)
  1934.     ReDim MarkCount(NumIdxs + 2)
  1935.     ' Initialise the poly count array
  1936.     For i = 0 To NumIdxs + 2
  1937.         MarkCount(i) = 5
  1938.     Next i
  1939.     ' initialise the points of the polypolygon
  1940.     For i = MarkStartIdx + 0 To MarkEndIdx
  1941.         X1 = SGetX(GraphicHandle, i)
  1942.         Y1 = SGetY(GraphicHandle, i)
  1943.         ToPhysicalXY FG1, X1, Y1
  1944.         If (GraphicType = G_DRAWTEXT) Then
  1945.             If i = 1 Then
  1946.                 X2 = X1
  1947.                 Y2 = Y1
  1948.             Else
  1949.                 X1 = X1 + X2
  1950.                 Y1 = Y1 + Y2
  1951.             End If
  1952.         End If
  1953.         MarkPoints((i - MarkStartIdx) * 5 + 0).X = X1 - 5
  1954.         MarkPoints((i - MarkStartIdx) * 5 + 0).Y = Y1 - 5
  1955.         MarkPoints((i - MarkStartIdx) * 5 + 1).X = X1 + 5
  1956.         MarkPoints((i - MarkStartIdx) * 5 + 1).Y = Y1 - 5
  1957.         MarkPoints((i - MarkStartIdx) * 5 + 2).X = X1 + 5
  1958.         MarkPoints((i - MarkStartIdx) * 5 + 2).Y = Y1 + 5
  1959.         MarkPoints((i - MarkStartIdx) * 5 + 3).X = X1 - 5
  1960.         MarkPoints((i - MarkStartIdx) * 5 + 3).Y = Y1 + 5
  1961.         MarkPoints((i - MarkStartIdx) * 5 + 4).X = X1 - 5
  1962.         MarkPoints((i - MarkStartIdx) * 5 + 4).Y = Y1 - 5
  1963.     Next i
  1964.     DoScale MarkPicture
  1965.     DoPaint MarkPicture
  1966. End Sub
  1967.  
  1968. Sub mu_About_Click ()
  1969.     AboutBox.Show 1
  1970. End Sub
  1971.  
  1972. Sub mu_AttribBar_Click ()
  1973.     mu_AttribBar.Checked = Not mu_AttribBar.Checked
  1974.     pnlAttribBar.Visible = mu_AttribBar.Checked
  1975.     Form_Resize
  1976. End Sub
  1977.  
  1978. Sub mu_ButtonBar_Click ()
  1979.     mu_ButtonBar.Checked = Not mu_ButtonBar.Checked
  1980.     pnlButtonBar.Visible = mu_ButtonBar.Checked
  1981.     Form_Resize
  1982. End Sub
  1983.  
  1984. Sub mu_ClearAll_Click ()
  1985.     CancelMark
  1986.     ClearAll FG1
  1987.     CurrTool = 0    ' Arrow tool
  1988.     GraphicHandles(0) = 1
  1989.     GraphicTypes(0) = G_GLOBALPIC
  1990.     MaxHandle = 1
  1991.     NumPoints = 0
  1992.     CurrPoint = 0
  1993.     CurrGraphic = -1
  1994.     InitAttributes
  1995.     'InitColors
  1996.     MarkPicture = -1
  1997.     MarkObjectIdx = -1
  1998.     MarkPolyPolygon = -1
  1999.     CanSetAttribs = False
  2000.     MarkPointIdx = -1
  2001.     EditDrag = False
  2002.     CanScroll = False
  2003.     AddPrinterPage
  2004.     picDrawSpace.Refresh
  2005.     grbDrawTool(0) = True
  2006. End Sub
  2007.  
  2008. Sub mu_Delete_Click (Index As Integer)
  2009.     cmdDeleteGraphic = True
  2010. End Sub
  2011.  
  2012. Sub mu_Exit_Click ()
  2013.     Unload Me
  2014. End Sub
  2015.  
  2016. Sub mu_Print_Click ()
  2017.     SetPlacement FG1, Printer.ScaleLeft, Printer.ScaleTop, Printer.ScaleWidth + Printer.ScaleLeft, Printer.ScaleHeight + Printer.ScaleTop
  2018.     DoScale FG1
  2019.     Printer.Print ""
  2020.     DoDraw FG1, Printer.hDC
  2021.     Printer.EndDoc
  2022.     SetPlacement FG1, 0, 0, picDrawSpace.ScaleWidth, picDrawSpace.ScaleHeight
  2023.     DoScale FG1
  2024. End Sub
  2025.  
  2026. Sub mu_Tool_Click (Index As Integer)
  2027.     Dim i As Integer
  2028.  
  2029.     For i = 0 To 15
  2030.         mu_Tool(i).Checked = False
  2031.     Next i
  2032.     mu_Tool(Index).Checked = True
  2033.     grbDrawTool(Index) = True
  2034. End Sub
  2035.  
  2036. Sub mu_ViewTips_Click ()
  2037.     mu_ViewTips.Checked = Not mu_ViewTips.Checked
  2038.     'frmToolTips.Timer1.Enabled = mu_ViewTips.Checked
  2039. End Sub
  2040.  
  2041. Sub mu_ZoomOut_Click ()
  2042.     cdmZoomOut = True
  2043. End Sub
  2044.  
  2045. Sub Panel3D1_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  2046.     Dim i As Integer
  2047.  
  2048.     If (Button And 1) <> 1 Then
  2049.         Exit Sub
  2050.     End If
  2051.     For i = 0 To 6
  2052.         If Y < (Line1(i).Y1 + 53) Then
  2053.             Shape1.Top = Line1(i).Y1 - Shape1.Height / 2
  2054.             CurrBorderStyle = i
  2055.             SetMarkAttribs
  2056.             Exit Sub
  2057.         End If
  2058.     Next i
  2059.     ' We only get here if no match found yet
  2060.     ' therefore use last option
  2061.     Shape1.Top = Line1(6).Y1 - Shape1.Height / 2
  2062.     CurrBorderStyle = 6
  2063.     SetMarkAttribs
  2064. End Sub
  2065.  
  2066. Sub Panel3D2_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  2067.     Dim i As Integer
  2068.  
  2069.     If (Button And 1) <> 1 Then
  2070.         Exit Sub
  2071.     End If
  2072.     For i = 0 To 4
  2073.         If Y < (Line2(i).Y1 + (Line2(i + 1).Y1 - Line2(i).Y1) / 2) Then
  2074.             Shape2.Top = Line2(i).Y1 - Shape2.Height / 2
  2075.             If i = 0 Then
  2076.                 CurrBorderWidth = 0
  2077.             Else
  2078.                 CurrBorderWidth = Line2(i).BorderWidth
  2079.             End If
  2080.             SetMarkAttribs
  2081.             Exit Sub
  2082.         End If
  2083.     Next i
  2084.     ' We only get here if no match found yet
  2085.     ' therefore use last option
  2086.     Shape2.Top = txtBorderWidth.Top + txtBorderWidth.Height / 2 - Shape2.Height / 2
  2087.     CurrBorderWidth = Val(txtBorderWidth)
  2088.     SetMarkAttribs
  2089. End Sub
  2090.  
  2091. Sub Panel3D3_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  2092.     Dim NewStyle As Integer
  2093.  
  2094.     If (Button And 1) <> 1 Then
  2095.         Exit Sub
  2096.     End If
  2097.     NewStyle = 0
  2098.     Select Case Y
  2099.         Case 0 To 300:
  2100.             NewStyle = 0
  2101.             Shape4.Top = 60
  2102.         Case 301 To 555:
  2103.             NewStyle = 1
  2104.             Shape4.Top = 315
  2105.         Case Else
  2106.             NewStyle = 2
  2107.             Shape4.Top = 570
  2108.     End Select
  2109.     Select Case X
  2110.         Case 0 To 300:
  2111.             NewStyle = NewStyle + 0
  2112.             Shape4.Left = 60
  2113.         Case 301 To 555:
  2114.             NewStyle = NewStyle + 3
  2115.             Shape4.Left = 315
  2116.         Case Else
  2117.             NewStyle = NewStyle + 6
  2118.             Shape4.Left = 570
  2119.     End Select
  2120.     If NewStyle > 7 Then
  2121.         NewStyle = 7
  2122.         Shape4.Top = 315
  2123.     End If
  2124.     CurrFIllStyle = NewStyle
  2125.     SetMarkAttribs
  2126. End Sub
  2127.  
  2128. Sub picColorBtns_DblClick ()
  2129.     On Error Resume Next
  2130.     
  2131.     CMDialog1.Color = GetBorderColor(AllColors(ColorSelectIdx(ColorRow), ColorRow))
  2132.     CMDialog1.Flags = 1 'CC_RGBINIT
  2133.     CMDialog1.Action = 3
  2134.     If (Err <> 0) Then
  2135.         Err = 0
  2136.         Exit Sub
  2137.     End If
  2138.     DoPaint ColorSelect(0)
  2139.     DoPaint ColorSelect(1)
  2140.     DoPaint ColorSelect(2)
  2141.     DoPaint ColorSelect(3)
  2142.     SetBorderColor AllColors(ColorSelectIdx(ColorRow), ColorRow), CMDialog1.Color
  2143.     SetFillColor AllColors(ColorSelectIdx(ColorRow), ColorRow), CMDialog1.Color
  2144.     DoPaint AllColors(ColorSelectIdx(ColorRow), ColorRow)
  2145.     DoPaint ColorSelect(0)
  2146.     DoPaint ColorSelect(1)
  2147.     DoPaint ColorSelect(2)
  2148.     DoPaint ColorSelect(3)
  2149.     UpdateCurrentColors
  2150.     SetMarkAttribs
  2151. End Sub
  2152.  
  2153. Sub picColorBtns_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  2154.     Dim Idx As Integer
  2155.     Dim BtnWidth As Double
  2156.     Dim BtnHeight As Integer
  2157.  
  2158.     BtnWidth = picColorBtns.ScaleWidth / NUM_COLORS
  2159.     BtnHeight = picColorBtns.ScaleHeight / 4
  2160.     
  2161.     ColorRow = Y / BtnHeight - .5
  2162.     Idx = (X / BtnWidth - .5)
  2163.     
  2164.     DoPaint ColorSelect(ColorRow)
  2165.     SetX ColorSelect(ColorRow), 1, BtnWidth * Idx
  2166.     SetX ColorSelect(ColorRow), 2, BtnWidth * (Idx + 1)
  2167.     DoPaint ColorSelect(ColorRow)
  2168.     ColorSelectIdx(ColorRow) = Idx
  2169.  
  2170.     UpdateCurrentColors
  2171.     SetMarkAttribs
  2172. End Sub
  2173.  
  2174. Sub picColorBtns_Paint ()
  2175.     'picColorBtns.Cls
  2176.     DoDraw FG2, picColorBtns.hDC
  2177. End Sub
  2178.  
  2179. Sub picDrawSpace_DblClick ()
  2180.     ' If a polypolygon is been drawn then end it
  2181.     If (CurrTool = G_POLYPOLYGON) And (CurrGraphic <> -1) Then
  2182.         DoPaint CurrGraphic
  2183.         SSetX CurrGraphic, CurrPoint, initx
  2184.         SSetY CurrGraphic, CurrPoint, inity
  2185.         SetPolyCount CurrGraphic, PolyPolygonCountIdx, CurrPoint - PolyCountStartIdx + 1
  2186.         SetDrawMode CurrGraphic, 13
  2187.         DoScale CurrGraphic
  2188.         DoPaint CurrGraphic
  2189.         CurrPoint = 0
  2190.         NumPoints = 0
  2191.         CurrGraphic = -1
  2192.     End If
  2193. End Sub
  2194.  
  2195. Sub picDrawSpace_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
  2196.     Dim tx As Double
  2197.     Dim ty As Double
  2198.  
  2199.     tx = X
  2200.     ty = Y
  2201.     ToScaleXY FG1, tx, ty
  2202.     If (Button And 2) = 2 Then
  2203.         If (CurrTool = 6) Or (CurrTool = 8) Or (CurrTool = 14) Or (CurrTool = G_POLYTEXTOut) Then
  2204.             NumPoints = CurrPoint
  2205.         Else
  2206.             If (CurrTool = G_POLYPOLYGON) And (CurrGraphic <> -1) Then
  2207.                 DoPaint CurrGraphic
  2208.                 SSetX CurrGraphic, CurrPoint, initx
  2209.                 SSetY CurrGraphic, CurrPoint, inity
  2210.                 initx = tx
  2211.                 inity = ty
  2212.                 SetPolyCount CurrGraphic, PolyPolygonCountIdx, CurrPoint - PolyCountStartIdx + 1
  2213.                 SAddPoint CurrGraphic, tx, ty
  2214.                 SAddPoint CurrGraphic, tx, ty
  2215.                 AddPolyCount CurrGraphic, 2
  2216.                 PolyCountStartIdx = CurrPoint + 1
  2217.                 CurrPoint = CurrPoint + 2
  2218.                 PolyPolygonCountIdx = PolyPolygonCountIdx + 1
  2219.                 DoScale CurrGraphic
  2220.                 DoPaint CurrGraphic
  2221.                 Exit Sub
  2222.             End If
  2223.         End If
  2224.     End If
  2225.     If NumPoints <> 0 Then
  2226.         Exit Sub
  2227.     End If
  2228.     Select Case CurrTool
  2229.         Case 0:
  2230.             If (MarkPointIdx >= 0) And (MarkObjectIdx <> -1) Then
  2231.                 NumPoints = MarkPointIdx
  2232.                 CurrPoint = MarkPointIdx
  2233.                 CurrGraphic = GraphicHandles(MarkObjectIdx)
  2234.                 EditDrag = True
  2235.                 SetDrawMode CurrGraphic, 10
  2236.                 SetFillStyle CurrGraphic, FS_HOLLOW
  2237.                 SetBackStyle CurrGraphic, BKS_TRANSPARENT
  2238.                 SetBorderWidth CurrGraphic, 0
  2239.                 DoScale CurrGraphic
  2240.                 DoPaint CurrGraphic
  2241.                 If (GraphicTypes(MarkObjectIdx) = G_DRAWTEXT) Then
  2242.                     initx = SGetX(CurrGraphic, 1)
  2243.                     inity = SGetY(CurrGraphic, 1)
  2244.                 End If
  2245.                 Exit Sub
  2246.             Else
  2247.                 EditDrag = False
  2248.                 Exit Sub
  2249.             End If
  2250.         Case G_ARC:
  2251.             NumPoints = 4
  2252.             CurrPoint = 2
  2253.             CurrGraphic = SCreateArc(FG1, tx, ty, tx + 1, ty + 1, 1, 1, 1, 1)
  2254.         Case G_CHORD:
  2255.             NumPoints = 4
  2256.             CurrPoint = 2
  2257.             CurrGraphic = SCreateChord(FG1, tx, ty, tx + 1, ty + 1, 1, 1, 1, 1)
  2258.         Case G_DRAWTEXT:
  2259.             NumPoints = 2
  2260.             CurrPoint = 2
  2261.             CurrGraphic = SCreateDrawText(FG1, "Draw Text", tx, ty, 20, 20, DT_LEFT Or DT_WORDBREAK)
  2262.             initx = tx
  2263.             inity = ty
  2264.         Case G_ELLIPSE:
  2265.             NumPoints = 2
  2266.             CurrPoint = 2
  2267.             CurrGraphic = SCreateEllipse(FG1, tx, ty, tx, ty)
  2268.         Case G_LINE:
  2269.             NumPoints = 2
  2270.             CurrPoint = 2
  2271.             CurrGraphic = SCreateLine(FG1, tx, ty, tx, ty)
  2272.         Case G_POLYGON:
  2273.             NumPoints = 10000
  2274.             CurrPoint = 2
  2275.             CurrGraphic = SCreatePolygon(FG1)
  2276.             SAddPoint CurrGraphic, tx, ty
  2277.             SAddPoint CurrGraphic, tx, ty
  2278.             SAddPoint CurrGraphic, tx, ty
  2279.         Case G_PIE:
  2280.             NumPoints = 4
  2281.             CurrPoint = 2
  2282.             CurrGraphic = SCreatePie(FG1, tx, ty, tx + 1, ty + 1, 1, 1, 1, 1)
  2283.         Case G_POLYLINE:
  2284.             NumPoints = 10000
  2285.             CurrPoint = 2
  2286.             CurrGraphic = SCreatePolyline(FG1)
  2287.             SAddPoint CurrGraphic, tx, ty
  2288.             SAddPoint CurrGraphic, tx, ty
  2289.             SAddPoint CurrGraphic, tx, ty
  2290.         Case G_POLYPOLYGON:
  2291.             NumPoints = 10000
  2292.             CurrPoint = 1
  2293.             PolyCountStartIdx = 0
  2294.             CurrGraphic = SCreatePolyPolygon(FG1)
  2295.             SAddPoint CurrGraphic, tx, ty
  2296.             SAddPoint CurrGraphic, tx, ty
  2297.             initx = tx
  2298.             inity = ty
  2299.             AddPolyCount CurrGraphic, 2
  2300.             PolyPolygonCountIdx = 0
  2301.         Case G_POLYTEXTOut:
  2302.             NumPoints = 10000
  2303.             CurrPoint = 1
  2304.             CurrGraphic = SCreatePolyTextOut(FG1)
  2305.             SAddPText CurrGraphic, tx, ty, ""
  2306.             SAddPText CurrGraphic, tx, ty, "PolyTextOut"
  2307.         Case G_RECTANGLE:
  2308.             NumPoints = 2
  2309.             CurrPoint = 2
  2310.             CurrGraphic = SCReateRectangle(FG1, tx, ty, tx, ty)
  2311.         Case G_ROUNDRECT:
  2312.             NumPoints = 3
  2313.             CurrPoint = 2
  2314.             CurrGraphic = SCreateRoundRect(FG1, tx, ty, tx, ty, tx, ty)
  2315.         Case G_TEXTOut:
  2316.             NumPoints = 1
  2317.             CurrPoint = 1
  2318.             initx = tx
  2319.             inity = ty
  2320.             CurrGraphic = SCreateTextOut(FG1, tx, ty, "Text Out")
  2321.         Case G_FREEHAND:
  2322.             CurrGraphic = SCreatePolyline(FG1)
  2323.             NumPoints = 10000
  2324.             CurrPoint = 2
  2325.             SAddPoint CurrGraphic, tx, ty
  2326.             SAddPoint CurrGraphic, tx, ty
  2327.         Case 15:
  2328.             NumPoints = 2
  2329.             CurrPoint = 2
  2330.             initx = tx
  2331.             inity = ty
  2332.             CurrGraphic = SCReateRectangle(FG1, tx, ty, tx, ty)
  2333.         Case Else
  2334.             Exit Sub
  2335.     End Select
  2336.     SetDrawMode CurrGraphic, 10
  2337.     If MaxHandle > MAX_GRAPHICS Then
  2338.         MsgBox "Out of graphic handles"
  2339.     Else
  2340.         GraphicHandles(MaxHandle) = CurrGraphic
  2341.         GraphicTypes(MaxHandle) = CurrTool
  2342.         MaxHandle = MaxHandle + 1
  2343.     End If
  2344.     If (CurrTool <> 15) And 1 Then
  2345.         SetBorderColor CurrGraphic, CurrBorderColor
  2346.         SetBorderStyle CurrGraphic, CurrBorderStyle
  2347.         SetBorderWidth CurrGraphic, -CurrBorderWidth
  2348.         SetBackColor CurrGraphic, CurrBackColor
  2349.         SetBackStyle CurrGraphic, CurrBackStyle
  2350.         SetFillColor CurrGraphic, CurrFillColor
  2351.         SetFillStyle CurrGraphic, CurrFIllStyle
  2352.         SetFontColor CurrGraphic, CurrFontColor
  2353.         SetFontFaceName CurrGraphic, CurrFontFaceName
  2354.         If CurrFontBold Then
  2355.             SetFontWeight CurrGraphic, 700
  2356.         Else
  2357.             SetFontWeight CurrGraphic, 300
  2358.         End If
  2359.         SetFontItalic CurrGraphic, CurrFontItalic
  2360.         SetFontPointHeight CurrGraphic, CurrFontHeight
  2361.         SetFontStrikeOut CurrGraphic, CurrFontStrikeOut
  2362.         SetFontUnderline CurrGraphic, CurrFontUnderline
  2363.     End If
  2364.     DoScale CurrGraphic
  2365.     DoPaint CurrGraphic
  2366. End Sub
  2367.  
  2368. Sub picDrawSpace_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single)
  2369.     Dim tx As Double
  2370.     Dim ty As Double
  2371.  
  2372.     tx = X
  2373.     ty = Y
  2374.     ToScaleXY FG1, tx, ty
  2375.     If (tx > 10000) Or (tx < -10000) Or (Abs(tx) < .1) Then
  2376.         lblXPos = Format$(tx, "0.00000E+00")
  2377.     Else
  2378.         lblXPos = Format$(tx)
  2379.     End If
  2380.     If (ty > 10000) Or (ty < -10000) Or (Abs(ty) < .1) Then
  2381.         lblYPos = Format$(ty, "0.00000E+00")
  2382.     Else
  2383.         lblYPos = Format$(ty)
  2384.     End If
  2385.     If CurrTool = 0 And (Not EditDrag) Then
  2386.         DoMarkPosCheck X, Y
  2387.     End If
  2388.     If CurrPoint > NumPoints Then
  2389.         Exit Sub
  2390.     End If
  2391.     If CurrGraphic = -1 Then
  2392.         Exit Sub
  2393.     End If
  2394.     Select Case CurrTool
  2395.         Case 0:
  2396.             If (GraphicTypes(MarkObjectIdx) = G_DRAWTEXT) Or (GraphicTypes(MarkObjectIdx) = G_TEXTOut) Or (GraphicTypes(MarkObjectIdx) = G_POLYTEXTOut) Then
  2397.                 SetDrawMode CurrGraphic, 13
  2398.                 SetFontColor CurrGraphic, QBColor(15)
  2399.                 SetBackColor CurrGraphic, QBColor(15)
  2400.             End If
  2401.             DoScale CurrGraphic
  2402.             DoPaint CurrGraphic
  2403.             If (GraphicTypes(MarkObjectIdx) = G_DRAWTEXT) Then
  2404.                 If (CurrPoint = 2) Then
  2405.                     SSetX CurrGraphic, CurrPoint, Abs(tx - initx)
  2406.                     SSetY CurrGraphic, CurrPoint, Abs(ty - inity)
  2407.                 Else
  2408.                     SSetX CurrGraphic, CurrPoint, tx
  2409.                     SSetY CurrGraphic, CurrPoint, ty
  2410.                 End If
  2411.             Else
  2412.                 SSetX CurrGraphic, CurrPoint, tx
  2413.                 SSetY CurrGraphic, CurrPoint, ty
  2414.             End If
  2415.             SetMarkPos X, Y, MarkPointIdx
  2416.             If (GraphicTypes(MarkObjectIdx) = G_DRAWTEXT) Or (GraphicTypes(MarkObjectIdx) = G_TEXTOut) Or (GraphicTypes(MarkObjectIdx) = G_POLYTEXTOut) Then
  2417.                 SetFontColor CurrGraphic, CurrFontColor
  2418.                 SetBackColor CurrGraphic, CurrBackColor
  2419.             End If
  2420.             DoScale CurrGraphic
  2421.             DoPaint CurrGraphic
  2422.         Case 3, 13:
  2423.             SetDrawMode CurrGraphic, 13
  2424.             SetFontColor CurrGraphic, QBColor(15)
  2425.             SetBackColor CurrGraphic, QBColor(15)
  2426.             DoScale CurrGraphic
  2427.             DoPaint CurrGraphic
  2428.             If CurrTool = 3 Then
  2429.                 SSetX CurrGraphic, CurrPoint, tx - initx
  2430.                 SSetY CurrGraphic, CurrPoint, ty - inity
  2431.             Else
  2432.                 SSetX CurrGraphic, CurrPoint, tx
  2433.                 SSetY CurrGraphic, CurrPoint, ty
  2434.             End If
  2435.             SetFontColor CurrGraphic, CurrFontColor
  2436.             SetBackColor CurrGraphic, CurrBackColor
  2437.             DoScale CurrGraphic
  2438.             DoPaint CurrGraphic
  2439.         Case 1, 2, 4, 5, 6, 7, 8, 11, 12, 10, G_POLYPOLYGON:
  2440.             DoScale CurrGraphic
  2441.             DoPaint CurrGraphic
  2442.             SSetX CurrGraphic, CurrPoint, tx
  2443.             SSetY CurrGraphic, CurrPoint, ty
  2444.             DoScale CurrGraphic
  2445.             DoPaint CurrGraphic
  2446.         Case 15:
  2447.             DoPaint CurrGraphic
  2448.             If chkKeepAspectRatio.Value Then
  2449.                 If Abs(tx - initx) > Abs(ty - inity) Then
  2450.                     'Adjust TX
  2451.                     tx = initx + Abs(inity - ty) * Sgn(-initx + tx)
  2452.                 Else
  2453.                     ' Adjust TY
  2454.                     ty = inity + Abs(initx - tx) * Sgn(-inity + ty)
  2455.                 End If
  2456.             End If
  2457.             SSetX CurrGraphic, CurrPoint, tx
  2458.             SSetY CurrGraphic, CurrPoint, ty
  2459.             DoScale CurrGraphic
  2460.             DoPaint CurrGraphic
  2461.         Case 14
  2462.             If CurrPoint < NumPoints Then
  2463.                 SetDrawMode CurrGraphic, 13
  2464.                 SAddPoint CurrGraphic, tx, ty
  2465.                 DoScale CurrGraphic
  2466.                 DoPaint CurrGraphic
  2467.                 CurrPoint = CurrPoint + 1
  2468.             End If
  2469.     End Select
  2470. End Sub
  2471.  
  2472. Sub picDrawSpace_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  2473.     Dim tx As Double
  2474.     Dim ty As Double
  2475.     Dim TheText As String
  2476.     
  2477.     Dim NewLeft As Double
  2478.     Dim NewTop As Double
  2479.     Dim NewWidth As Double
  2480.     Dim NewHeight As Double
  2481.     Dim dummy As Double
  2482.  
  2483.     tx = X
  2484.     ty = Y
  2485.     ToScaleXY FG1, tx, ty
  2486.     If (CurrTool = 0) And ((Button And 1) = 1) And (Not EditDrag) Then
  2487.         DoHitTesting Shift, tx, ty
  2488.         Exit Sub
  2489.     End If
  2490.     If CurrGraphic = -1 Then
  2491.         Exit Sub
  2492.     End If
  2493.     Select Case CurrTool
  2494.         Case 0:
  2495.             'DoPaint CurrGraphic
  2496.             If (GraphicTypes(MarkObjectIdx) = G_DRAWTEXT) And (CurrPoint = 2) Then
  2497.                 SSetX CurrGraphic, CurrPoint, Abs(tx - initx)
  2498.                 SSetY CurrGraphic, CurrPoint, Abs(ty - inity)
  2499.             Else
  2500.                 SSetX CurrGraphic, CurrPoint, tx
  2501.                 SSetY CurrGraphic, CurrPoint, ty
  2502.             End If
  2503.             SetDrawMode CurrGraphic, 13
  2504.             SetMarkAttribs
  2505.             'DoScale CurrGraphic
  2506.             'DoPaint CurrGraphic
  2507.             CurrPoint = 0
  2508.             NumPoints = 0
  2509.             CurrGraphic = -1
  2510.             EditDrag = False
  2511.             'picDrawSpace.Refresh
  2512.         Case 3, 13:
  2513.             SetFontColor CurrGraphic, QBColor(15)
  2514.             SetBackColor CurrGraphic, QBColor(15)
  2515.             DoPaint CurrGraphic
  2516.             If CurrTool = 3 Then
  2517.                 SSetX CurrGraphic, CurrPoint, tx - initx
  2518.                 SSetY CurrGraphic, CurrPoint, ty - inity
  2519.             Else
  2520.                 SSetX CurrGraphic, CurrPoint, tx
  2521.                 SSetY CurrGraphic, CurrPoint, ty
  2522.             End If
  2523.             SetFontColor CurrGraphic, CurrFontColor
  2524.             DoScale CurrGraphic
  2525.             DoPaint CurrGraphic
  2526.             CurrPoint = CurrPoint + 1
  2527.             SetFontColor CurrGraphic, CurrFontColor
  2528.             SetBackColor CurrGraphic, CurrBackColor
  2529.             TheText = InputBox$("Enter your text.")
  2530.             SetString CurrGraphic, TheText
  2531.             picDrawSpace.Refresh
  2532.         Case 1, 2, 4, 5, 7, 11, 12:
  2533.             DoPaint CurrGraphic
  2534.             SSetX CurrGraphic, CurrPoint, tx
  2535.             SSetY CurrGraphic, CurrPoint, ty
  2536.             DoScale CurrGraphic
  2537.             DoPaint CurrGraphic
  2538.             CurrPoint = CurrPoint + 1
  2539.         Case 14:
  2540.             NumPoints = CurrPoint
  2541.             CurrPoint = CurrPoint + 1
  2542.         Case 6, 8:
  2543.             DoPaint CurrGraphic
  2544.             SSetX CurrGraphic, CurrPoint, tx
  2545.             SSetY CurrGraphic, CurrPoint, ty
  2546.             SAddPoint CurrGraphic, tx, ty
  2547.             DoScale CurrGraphic
  2548.             DoPaint CurrGraphic
  2549.             CurrPoint = CurrPoint + 1
  2550.         Case G_POLYPOLYGON:
  2551.             DoPaint CurrGraphic
  2552.             SSetX CurrGraphic, CurrPoint, tx
  2553.             SSetY CurrGraphic, CurrPoint, ty
  2554.             If CurrPoint <> NumPoints Then
  2555.                 SAddPoint CurrGraphic, tx, ty
  2556.                 SetPolyCount CurrGraphic, PolyPolygonCountIdx, CurrPoint - PolyCountStartIdx + 2
  2557.             End If
  2558.             DoScale CurrGraphic
  2559.             DoPaint CurrGraphic
  2560.             CurrPoint = CurrPoint + 1
  2561.         Case G_POLYTEXTOut:
  2562.             DoPaint CurrGraphic
  2563.             SSetX CurrGraphic, CurrPoint, tx
  2564.             SSetY CurrGraphic, CurrPoint, ty
  2565.             If CurrPoint <> NumPoints Then
  2566.                 SAddPText CurrGraphic, tx, ty, "PolyTextOut"
  2567.             End If
  2568.             TheText = InputBox$("Enter your text.")
  2569.             SetPTextAt CurrGraphic, CurrPoint, TheText
  2570.             picDrawSpace.Refresh
  2571.             CurrPoint = CurrPoint + 1
  2572.         Case 15:
  2573.             DoPaint CurrGraphic
  2574.             SSetX CurrGraphic, CurrPoint, tx
  2575.             SSetY CurrGraphic, CurrPoint, ty
  2576.             If tx < initx Then
  2577.                 dummy = tx
  2578.                 tx = initx
  2579.                 initx = dummy
  2580.             End If
  2581.             If ty < inity Then
  2582.                 dummy = ty
  2583.                 ty = inity
  2584.                 inity = dummy
  2585.             End If
  2586.             If chkKeepAspectRatio.Value Then
  2587.                 If Abs(tx - initx) > Abs(ty - inity) Then
  2588.                     'Adjust TX
  2589.                     tx = initx + Abs(inity - ty) * Sgn(-initx + tx)
  2590.                 Else
  2591.                     ' Adjust TY
  2592.                     ty = inity + Abs(initx - tx) * Sgn(-inity + ty)
  2593.                 End If
  2594.             End If
  2595.             
  2596.             SetScale FG1, initx, inity, tx - initx, ty - inity
  2597.             If chkKeepAspectRatio.Value Then
  2598.                 If picDrawSpace.ScaleWidth > picDrawSpace.ScaleHeight Then
  2599.                     SetPlacement FG1, 0, 0, picDrawSpace.ScaleHeight, picDrawSpace.ScaleHeight
  2600.                 Else
  2601.                     SetPlacement FG1, 0, 0, picDrawSpace.ScaleWidth, picDrawSpace.ScaleWidth
  2602.                 End If
  2603.             Else
  2604.                 SetPlacement FG1, 0, 0, picDrawSpace.ScaleWidth, picDrawSpace.ScaleHeight
  2605.             End If
  2606.             CurrPoint = 0
  2607.             NumPoints = 0
  2608.             RemoveObject CurrGraphic, picDrawSpace.hDC, 0, True, 0
  2609.             CurrGraphic = -1
  2610.             picDrawSpace.Refresh
  2611.     End Select
  2612.     If CurrPoint > NumPoints Then
  2613.         If CurrGraphic <> -1 Then
  2614.             SetDrawMode CurrGraphic, 13
  2615.             DoScale CurrGraphic
  2616.             DoPaint CurrGraphic
  2617.         End If
  2618.         CurrPoint = 0
  2619.         NumPoints = 0
  2620.         CurrGraphic = -1
  2621.     End If
  2622. End Sub
  2623.  
  2624. Sub picDrawSpace_Paint ()
  2625.     'picDRawSpace.Cls
  2626.     DoScale FG1
  2627.     'DoDraw 1, picDRawSpace.hDC
  2628.     DoPaint FG1
  2629. End Sub
  2630.  
  2631. Sub ResizeColorButtons ()
  2632.     Dim i As Integer
  2633.     Dim j As Integer
  2634.     Dim ButtonWidth As Double
  2635.     
  2636.     ButtonWidth = (picColorBtns.ScaleWidth / NUM_COLORS - 0#)
  2637.     For i = 0 To NUM_COLORS - 1
  2638.         For j = 0 To 3
  2639.             SetX AllColors(i, j), 1, i * ButtonWidth
  2640.             SetX AllColors(i, j), 2, (i + 1) * ButtonWidth
  2641.         Next j
  2642.     Next i
  2643.     For j = 0 To 3
  2644.         SetX ColorSelect(j), 1, ColorSelectIdx(j) * ButtonWidth
  2645.         SetX ColorSelect(j), 2, (ColorSelectIdx(j) + 1) * ButtonWidth
  2646.         SetBorderWidth ColorSelect(j), ButtonWidth / 4
  2647.     Next j
  2648. End Sub
  2649.  
  2650. Sub SetMarkAttribs ()
  2651.     If (MarkObjectIdx >= 0) And CanSetAttribs Then
  2652.         SetBorderColor GraphicHandles(MarkObjectIdx), CurrBorderColor
  2653.         SetBorderStyle GraphicHandles(MarkObjectIdx), CurrBorderStyle
  2654.         SetBorderWidth GraphicHandles(MarkObjectIdx), -CurrBorderWidth
  2655.         SetBackColor GraphicHandles(MarkObjectIdx), CurrBackColor
  2656.         SetBackStyle GraphicHandles(MarkObjectIdx), CurrBackStyle
  2657.         SetFillColor GraphicHandles(MarkObjectIdx), CurrFillColor
  2658.         SetFillStyle GraphicHandles(MarkObjectIdx), CurrFIllStyle
  2659.         SetFontColor GraphicHandles(MarkObjectIdx), CurrFontColor
  2660.         SetFontFaceName GraphicHandles(MarkObjectIdx), CurrFontFaceName
  2661.         If CurrFontBold Then
  2662.             SetFontWeight GraphicHandles(MarkObjectIdx), 700
  2663.         Else
  2664.             SetFontWeight GraphicHandles(MarkObjectIdx), 300
  2665.         End If
  2666.         SetFontItalic GraphicHandles(MarkObjectIdx), CurrFontItalic
  2667.         SetFontPointHeight GraphicHandles(MarkObjectIdx), CurrFontHeight
  2668.         SetFontStrikeOut GraphicHandles(MarkObjectIdx), CurrFontStrikeOut
  2669.         SetFontUnderline GraphicHandles(MarkObjectIdx), CurrFontUnderline
  2670.         picDrawSpace.Refresh
  2671.     End If
  2672. End Sub
  2673.  
  2674. Sub SetMarkPos (X As Single, Y As Single, ThePointIdx As Integer)
  2675.     DoPaint MarkPicture
  2676.     MarkPoints((ThePointIdx - MarkStartIdx) * 5 + 0).X = X - 5
  2677.     MarkPoints((ThePointIdx - MarkStartIdx) * 5 + 0).Y = Y - 5
  2678.     MarkPoints((ThePointIdx - MarkStartIdx) * 5 + 1).X = X + 5
  2679.     MarkPoints((ThePointIdx - MarkStartIdx) * 5 + 1).Y = Y - 5
  2680.     MarkPoints((ThePointIdx - MarkStartIdx) * 5 + 2).X = X + 5
  2681.     MarkPoints((ThePointIdx - MarkStartIdx) * 5 + 2).Y = Y + 5
  2682.     MarkPoints((ThePointIdx - MarkStartIdx) * 5 + 3).X = X - 5
  2683.     MarkPoints((ThePointIdx - MarkStartIdx) * 5 + 3).Y = Y + 5
  2684.     MarkPoints((ThePointIdx - MarkStartIdx) * 5 + 4).X = X - 5
  2685.     MarkPoints((ThePointIdx - MarkStartIdx) * 5 + 4).Y = Y - 5
  2686.     DoPaint MarkPicture
  2687. End Sub
  2688.  
  2689. Sub SetSelectBorderWidth (BorderWidth As Integer)
  2690.     Dim i As Integer
  2691.  
  2692.     If BorderWidth = 0 Then
  2693.         Shape2.Top = Line2(0).Y1 - Shape2.Height / 2
  2694.         CurrBorderWidth = BorderWidth
  2695.         Exit Sub
  2696.     End If
  2697.     For i = 1 To 5
  2698.         If BorderWidth = Line2(i).BorderWidth Then
  2699.             Shape2.Top = Line2(i).Y1 - Shape2.Height / 2
  2700.             CurrBorderWidth = BorderWidth
  2701.             Exit Sub
  2702.         End If
  2703.     Next i
  2704.     ' We only get here if no match found so use last one
  2705.     Shape2.Top = txtBorderWidth.Top + txtBorderWidth.Height / 2 - Shape2.Height / 2
  2706.     txtBorderWidth = Str$(BorderWidth)
  2707. End Sub
  2708.  
  2709. Sub SetSelectedBorderStyle (NewBorderStyle As Integer)
  2710.     Dim TempY As Single
  2711.  
  2712.     TempY = Line1(NewBorderStyle).Y1
  2713.     Panel3D1_MouseUp 1, 0, 0, TempY
  2714. End Sub
  2715.  
  2716. Sub SetSelectedColor (TheColor, TheRow As Integer)
  2717.     Dim BtnWidth As Double
  2718.     Dim BtnHeight As Double
  2719.     Dim X As Single
  2720.     Dim Y As Single
  2721.     Dim i As Integer
  2722.  
  2723.     BtnWidth = picColorBtns.ScaleWidth / NUM_COLORS
  2724.     BtnHeight = picColorBtns.ScaleHeight / 4
  2725.     
  2726.     ColorRow = Y / BtnHeight - .5
  2727.     Y = (TheRow + .5) * BtnHeight
  2728.     X = -1
  2729.     For i = 0 To NUM_COLORS - 1
  2730.         If GetBorderColor(AllColors(i, TheRow)) = TheColor Then
  2731.             X = (i + .5) * BtnWidth
  2732.             i = NUM_COLORS
  2733.         End If
  2734.     Next i
  2735.     If X = -1 Then
  2736.         ' No matching color was found so make a new one
  2737.         DoPaint ColorSelect(0)
  2738.         DoPaint ColorSelect(1)
  2739.         DoPaint ColorSelect(2)
  2740.         DoPaint ColorSelect(3)
  2741.  
  2742.         SetBorderColor AllColors(NUM_COLORS - 1, TheRow), TheColor
  2743.         SetFillColor AllColors(NUM_COLORS - 1, TheRow), TheColor
  2744.         DoPaint AllColors(NUM_COLORS - 1, TheRow)
  2745.  
  2746.         DoPaint ColorSelect(0)
  2747.         DoPaint ColorSelect(1)
  2748.         DoPaint ColorSelect(2)
  2749.         DoPaint ColorSelect(3)
  2750.         X = (NUM_COLORS - .5) * BtnWidth
  2751.     End If
  2752.     picColorBtns_MouseUp 1, 0, X, Y
  2753. End Sub
  2754.  
  2755. Sub SetSelectFillStyle (FillStyle As Integer)
  2756.     Dim X As Single
  2757.     Dim Y As Single
  2758.  
  2759.     Select Case FillStyle
  2760.         Case 0:
  2761.             X = 150
  2762.             Y = 150
  2763.         Case 1:
  2764.             X = 150
  2765.             Y = 420
  2766.         Case 2:
  2767.             X = 150
  2768.             Y = 600
  2769.         Case 3:
  2770.             X = 420
  2771.             Y = 150
  2772.         Case 4:
  2773.             X = 420
  2774.             Y = 420
  2775.         Case 5:
  2776.             X = 420
  2777.             Y = 600
  2778.         Case 6:
  2779.             X = 600
  2780.             Y = 150
  2781.         Case 7:
  2782.             X = 600
  2783.             Y = 420
  2784.     End Select
  2785.     Panel3D3_MouseUp 1, 0, X, Y
  2786. End Sub
  2787.  
  2788. Sub txtBorderWidth_Change ()
  2789.     CurrBorderWidth = Val(txtBorderWidth)
  2790. End Sub
  2791.  
  2792. Sub UpdateCurrentColors ()
  2793.     CurrBorderColor = GetBorderColor(AllColors(ColorSelectIdx(0), 0))
  2794.     CurrFillColor = GetBorderColor(AllColors(ColorSelectIdx(1), 1))
  2795.     CurrFontColor = GetBorderColor(AllColors(ColorSelectIdx(2), 2))
  2796.     CurrBackColor = GetBorderColor(AllColors(ColorSelectIdx(3), 3))
  2797. End Sub
  2798.  
  2799.